読者です 読者をやめる 読者になる 読者になる

kyosho5’s blog

貧乏で数学があまり得意ではない理系出身のエンジニアのブログ

デザインパターン勉強メモ⑥

第11章 Compositeパターン

容器と中身を同一視し、再帰的な構造を作る。

Leaf
→中身を表す役。この役の中には他の物を入れることはできない。

・Composite役
→容器を表す役。中にLeaf役や他のComposite役を入れることができる。

・Component約
Leaf役とComposite役を同一視するための役。それぞれのスーパークラス

・Client役
→Compositeパターンの利用者。

サブクラスでしか使わないメソッドをインタフェース(API)で規定するときには、
API側では例外処理のみを書く、実装はするが処理は何もしないなどの方法がある。

引数の数が異なる同名のメソッドを書いておくと、呼び出されたときに引数の形態から自動的にどのメソッドが実行されるかが決まる。
オーバーロード(多重定義)

第12章 Decoratorパターン

あるオブジェクトに、あとから機能を追加していくことでより目的に近いオブジェクトを作る。

・Component役
→機能を追加するときの核になる役。インタフェース(API)のみを定める。

・ConcreteComponent役
→Component役のインタフェース(API)を実装しているクラス。

・Decorator約
→Componentと同じインタフェース(API)を持つ。さらに、このDecorator役が装飾する対象となる
Component役を持っている。(自分が装飾するクラスを知っている)

・ConcreteDecorator役
→具体的なDecoratorの役。

Decoratorパターンでは中身と飾り枠を同一視している。
(サンプルではBorderとそのサブクラス、そしてDisplayクラス)
→つまり同じインタフェースを持っている。→飾り枠が増えてもインタフェースは隠されない
→インタフェースが透過的であるという。