ハリウッド原則

hollywood-principle.png
man3.jpg
こちらを呼び出さないでください。
こちらから呼び出しますから
Don't call us,
We'll call you.

javaならfinal,C++ならばconstをつけることによって、Don't call usを実現し、
そのfinalにした関数の中で、自分の中の他の関数を呼ぶことによってWe'll call you を実現する

つまり、
子クラスが、いつどのように必要になるかは親クラスが判断する。
なので、親クラスが、子クラスに対して「こちらを呼び出さないでください。こちらから呼び出します」
と言っているのだ。

ハリウッド原則は、低水準コンポーネントと高水準層との間に依存性を作ることなく、
低水準コンポーネントを演算の中にフックできるようにするためのフレームワークやコンポーネントを構築するテクニックである。
ハリウッド原則は、他のクラスが低水準構造に依存しすぎないようにしながら、低水準構造の相互運用を可能にする設計を行うためのテクニックを提供する。

デザインパターン 説明
Template-Method 交換可能な振る舞いをカプセル化し、移譲を使って使用すべき振る舞いを決めます
Strategy サブクラスがアルゴリズムの手順の実装方法を決めます
Factory-Method サブクラスがどの具象クラスをインスタンス化するかを決めます

Temaplate MethodとStratedyの違い

Template-Method Strategy
アルゴリズムの骨組みを定義すること。サブクラスにいくつかの仕事をさせる。 一連のアルゴリズムを定義し、それらを交換可能にする。
アルゴリズムの各手順の異なる実装を持つことができる 各アルゴリズムをカプセル化するため、クライアントは異なるアルゴリズムを簡単に使える
アルゴリズムの構造は制御し続ける アルゴリズムの制御は破棄しなければならない
継承を使用する コンポジションを使用する
コードの重複が少ない 柔軟性がある

observer template-method

サポートサイト Wikidot.com observertemplate-method