ソフトウェア開発メモ

日々のソフトウェア設計、実装で考えている、気づいた事を書いています。それが真実か否かは保証しません。悪しからず。

制御スタイルのトレードオフ

引き続き書籍「オブジェクトデザイン」の制御スタイルについて読みました

集中型制御スタイル。

長所。

  • 判断ロジックが制御役に集中するので制御ポリシーのロジックを変え易い。 

  • オブジェクト間の同期を取るのが簡単

短所

  • 状態変数を多く所持してしまう。

  • 制御される方の内部状態に強く依存してしまう。

  • 上記の結果として間接的に結合してしまう。

  • 制御される方のクラスの再利用性が低下してしまう。

委譲型制御スタイル

長所

  • 私的には自明なので特に書くことは有りません。

短所

  • 「責務を分配しすぎると、イマイチなオブジェクトやコラボレーションを生む可能性がある。」

*オブジェクト間の同期処理が複雑になる。

  • オブジェクト間の関係をよく設計しないと帰って複雑になる。

更に

「責務を分配しすぎると、イマイチなオブジェクトやコラボレーションを生む可能性がある。」はどうでしょう?

 最近のドメイン駆動設計や他の文献から記述、例えばファーストコレクションとかバリューオブジェクト、スモールオブジェクト、オブジェクト指向エクササイズからすると、クラスはできるだけ小さく分けるべきという流れです。

もちろん極端なのはインスタンスを単にラップしただけなので意味がないと思いますが。。。。

まとめ

以下のようにまとめます。

  • 集中型制御スタイルは制御の同期や変更が箇所が一箇所で行なえる反面、制御ロジックが煩雑になり、 制御する方が神クラスに、制御される方が単なるヘルパークラスや情報ホルダーになる傾向が有ります。

  • 委譲型制御スタイルは各々の自律性が上がって、結合度がひくくなり再利用性が上がる反面、オブジェクト間の調整処理やリレーションの設計コストが上がります。