[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends] Re: [jfriends] Re: JAVAオブジェクト設計第二章の別案




In article <36AC895B.B544C94C@xxxxxxxxxx>
Tomohiro Takahashi wrote:
>> 以下の実装でも人オブジェクトとその人の役割オブジェクトは別のオブジェ
>> クトではありますが、外部からはそれを意識する必要はありません.
>> # 役割を動的に付け替える必要が無いなら単純にimplementsしたクラスを作
>> # るだけで、静的に「役割を付加」できますが.
>> 
>> <略...>
>> 
>> 使うときはConcretePersonオブジェクトは単体で使えますが、それに役割を
>> 付加する場合にまずConcretePersonRoleオブジェクトに変形して(或いは最
>> 初からConcretePersonRoleオブジェクトを生成)、それらを下の3つのクラ
>> スの何れかのコンストラクタに渡せば動的に役割の付加が出来ます.
>> # 役割の取り外しも可能ですがそのメソッドの記述は省略しています.
>
>  こーすると、ConcretePersonのインスタンスがたくさん生成されるという
>ことでしょうか? 
>  人の役割が頻繁に移り変わる可能性がある場合、同一人物の別のインスタ
>ンスを生成させられるとしたら、なんかやだなぁ (^^)。 データベースへの
>格納をすぐに意識してしまうのです。(^^;

人オブジェクトは常に一つですよ.
役割オブジェクトをnewしても同じ人オブジェクトの参照を引き継ぎます.
その辺のオブジェクト(属性)の重複を避けるためにConcretePersonRoleとい
うちょっと無駄なクラスを書いてしまってるのが見苦しいのですが...

役割を多重に付加(何度もnew)したときに既に持っている役割を重複させな
いようにすべきだったり、最初に書いたソースでは解決しなければならない
問題がまだまだありますね.
# 私のも所詮浅知恵ですね.今度時間があればほんとにもっとしっかり考え
# て、新しいパターンとして公開しようかな...とは思いますが...

=====================================
Shin@イデア
=====================================