いろきゅうの(元)はてなダイアリー

はてなダイアリーから移行中…

24時間プログラミング 22時間目 〜 仕様変更のフィールド

http://ir9.jp/hd/hd060826_10.jpg

5時からし〜!




いやー、なんというか、私のつくりがヘタというか。 前々から問題になっていたことが今、結構強めに問題になってます。

  1. クラスAが、クラスBの 内部情報を利用 する為 #include している。
  2. クラスBの定義で、描画用クラスCのヘッダー を #include している。
  3. クラスCはクラスAに本来必要とされないのに、コンパイラ的には必要とされてしまう。

クラスBが「内部情報保持しつつ描画用コードを兼ねている」ってのが悪いんじゃないかと個人的には思っています。 Document and View スタイルを完全無視 というか、MVC を完全無視と言うか。 (…いやまぁ言ってることが正しい自信は無いんですが…(ぉ^^;)
内部情報と描画用コードが上手く分離できれば A と C の関係は切り離せるのに…

…とはいえ、これらの考え方は何となく解るんですが、実際ゲームで利用するとなるとどーすりゃいいんだろうなぁ…ってのが正直な所です。

Viewする時に利用するデータは、Document にあるわけですから、View が Document にデータを取りに行かなくてはならない……って、なんか逆じゃね? Document が更新されたら View に更新されたデータを通知する話なハズです。

とはいえ、ぶっちゃけ動けばいいわけですから、柔軟に考えて、View が取りに行くって話にするべきかー…ということで、頑張って Document と View を別のクラスに分けたとしても、Document 定義してるヘッダーで View 用のヘッダー include しちゃうと、結局描画用のヘッダーも include されるような気がするし…。



うーん。



View 用のクラスを、Document クラスの頭で先行宣言してポインタを保持、document の cpp で View を #include して new してインスタンスをつくる…とか?

#include 関係については問題解決できるんです…が…



綺麗に実装できるのかなぁ…。^^;
デザパタ本でも見るかのぅ…。