プログラマメモ2 - programmer no memo2

オブジェクトのまとめかた、操作について、なんとなく考えたことのメモ 2007/07/15

ところで、デコレートパターンについて考えた。結論はないのだけども。

javaでこのパターンの適用として成功しているものとしての説明としては、java.io.*がよく例にあげられるみたい。

さて、このパターンがうまくいく場合って、実際にはどういう場合なんだろう?



ひとつのオブジェクトが別のオブジェクトから構成されるような図のオブジェクトグラフを操作単一クラスで操作したい場合にさてデコレートパターンを適用するってどういう感じになるのだろう。そもそも

何か勘違いしているような気がするな。

ちなみに、図のオブジェクトグラフは、データオブジェクトの集まりとして、さらにこれをMapにしてみたとする。下記の図のようになるのかな。



で、データオブジェクトをMapで作成したいという考えには、Mapのキーを文字列にした場合に、他の定義との親和性が高くなるからそうしたい気持ちがあるだと思う。

例えば、プロパティとgetter,setterのデータオブジェクトの場合(javaならPOJO)、他の定義とマッピングする場合、コード上の変換が面倒になるから。getter,setterをコードで書くの面倒だということなんだよね。

Mapだとキーの配列があってぐるぐるまわせば、値の出し入れができるから。

しかし、Mapだとオブジェクトグラフを表現する場合にその性質上、なんでも格納することが可能なので、厳密ではなくなる。木構造で保持したいオブジェクトグラフが簡単に壊すことができる。
とはいってもMapに格納するデータの型を決定してしまえばいいのだけれども。

それとはべつにどこにデータオブジェクトのキーを設定するのかということも気にしないといけない。

そもそもドメインオブジェクトの実装をMapにするというアイデアはあまりよくないのかもしれない。
オブジェクト構造をもたないフラットなデータの集まりであれば、いいのだが、関連をもつオブジェクトグラフをMapにうつすのはできないと思う。

クラスのもつ型が強力な制約になると考えているのだけども、それをすててしまうのももったいない気がする。

とつらつら考えた。
全然、的を得ていないな。

: