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

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




  こんびんば。なんかたくさんメールが来ててびっくりしました。
  C++Builderに付属のOCXのバグと闘っております。

Shin wrote:
> 
> ただ、以降を読み進んでも結局Passenger is Personにはならないんですよ
> ね.
> 私はinterfaceはクラスに応答可能性を付加するものだと考えているんで、
> せっかくそういう機構があるのにPassenger(乗客)がPerson(人)として扱え
> ないのは異常に不自然に見えます.
> # だって、乗客オブジェクトから人オブジェクトを取り出して操作するんで
> # すよ.使う側の立場で見て混乱を招きそうです.

  "乗客としての役割(資格)"オブジェクトから、人オブジェクトを取り出して
(参照して)操作するということで設計していらっしゃるとしても、なんか混乱
を招きそうではありますね。

 
> 以下の実装でも人オブジェクトとその人の役割オブジェクトは別のオブジェ
> クトではありますが、外部からはそれを意識する必要はありません.
> # 役割を動的に付け替える必要が無いなら単純にimplementsしたクラスを作
> # るだけで、静的に「役割を付加」できますが.
> 
> <略...>
> 
> 使うときはConcretePersonオブジェクトは単体で使えますが、それに役割を
> 付加する場合にまずConcretePersonRoleオブジェクトに変形して(或いは最
> 初からConcretePersonRoleオブジェクトを生成)、それらを下の3つのクラ
> スの何れかのコンストラクタに渡せば動的に役割の付加が出来ます.
> # 役割の取り外しも可能ですがそのメソッドの記述は省略しています.

  こーすると、ConcretePersonのインスタンスがたくさん生成されるという
ことでしょうか? 
  人の役割が頻繁に移り変わる可能性がある場合、同一人物の別のインスタ
ンスを生成させられるとしたら、なんかやだなぁ (^^)。 データベースへの
格納をすぐに意識してしまうのです。(^^;

  
-------------
高橋智宏