投稿数 585
公開から 2940

Decoratorパターン


Categories: design-pattern

継承好きのための設計上の見識

典型的な継承の乱用を再検証し

クラスは拡張に対しては開かれた状態であるべきであるが、変更に対しては閉じた状態であるべきである。

継承だと拡張に対しても閉じがち

基盤となるコードは変更したくない

継承せずにラッパークラスとするってことか。。。でもそれって継承と違うのってかんじだよな。

サブクラス化の代替

デコレーターパターンはオブジェクトに付加的な責務を動的に付与します。 デコレーターはサブクラス化の代替(だいたい)となる柔軟な機能拡張を付与します。

どゆこと?

コンポーネント?

ここでいうインスタンス変数とはdescriptionのこと。

モカは必ず型がvarage型であることが確証されるから

moka(whip(飲み物)); ってやっていけるってこと?

ああ!コンポーネントって構成要素のことか!! やっぱり言葉を正しく理解するって大事だわ。

振る舞い自体はデコレータで実装できるけど、インスタンス変数で一番親のコンポーネントを持つことでそのインスタンス変数の型を返せるようになる。

すべて飲み物の型を返している