●子(集約)オブジェクトのイベント通知

以下は、会社、部、課が集約関係にあるとして、お読みください。

00522一部/00522 VFF15672 T's-Neko 集約されたオブジェクト(子)のIDと処理 ( 7) 97/09/27 16:04 00506へのコメント katana さん、こんばんは。T's-Neko です。(^o^)o 【集約されたオブジェクト(子)の処理】 >このあたりが集約の悩みどころのよう な気がするんです。子(部門)は、親(会社) >に集約されているので、会社のメソッドを通じて削除されるべきだと考えると、 >末端にあるグループ(課の下)を削除する場合は、親〜子のつながりをたどって行 >く必要があり、使う側はたいへんだし...。あっと、T's-Nekoさんは全く別の考 >えかもしれません。(^^; たとえ、会社(親)にその処理(メソッド)があったとしても、 部(子)がその通知受け入れて、会社(親)に委譲(再通知)すれば、 いいですね。Delphi では、このパターンを使っています。 ボタンが押されるとメソッド・ポインタ(*1)を通じて親(ウィンドウ)に 委譲(メソッドの呼び出し)しています。 (*1)メソッド・ポインタ: 関数ポインタのメソッド版 内部に、オブジェクトへのポインタとメソッド(関数)への ポインタを持っている。 過去ログ: 旧OOについて議論する(2)#9-78 実際の処理を置く場所なんですが、親と子の1対1の処理であれば、 子に置いた方がいいと思います。子にメッセージを送れば (処理を呼び出せば)、子は親へのポインタを持っているので(なら) 親を特定できますね。親にメッセージを送るなら、どの子に 対する処理なのかも、引数で指定しなければなりません。 逆に1対多の処理であれば、親に処理を置いた方がいいと思います。 おっしゃる通り、子から別の子のアクセスするのは大変ですからね。 でも、前述のように、メッセージの受け口を子に作って、 メソッド・ポインタを用いて親に通知するようにして、 ユーザーに楽をさせるのがいいと思います。 --- Neko.

This text was copyed from Niftyserve Programer's Forum Pro.