Decoratorパターンってなぁに
既存のクラスをラップして、新しいパラメーターやメソッドを使えるようにするもの
class 俺のデコレーター implements 俺インターフェース {
public function __construct (俺インターフェース ore) {
this->inner->ore
}
public function 追加機能1 () {}
public function 追加機能2 () {}
...
}
デコレーター埋め込み時のポイントは、
- 元のクラスを内包すること
- 元のクラスと同じインターフェースを埋め込むこと
「元のクラスちょっといじりたい...」
「でも最終的に元のクラスとインターフェースで渡さないとだめ」
「継承はちょっと...」
っていうときに継承せずに盛れる
継承 vs 合成
デコレーターみたいに継承せずに機能拡張することを合成というらしい
「継承よりも合成を優先せよ (Favor composition over inheritance)」っていうOOPの原則があるらしいよぃ
わかる、継承って重いよね(本当にわかっとんのか?)
あーしも最近継承したくない場面があったから合成して済ませましたぃ