forget for get

覚えるために忘れる

2023-01-01から1年間の記事一覧

Compositeパターン

容器と中身の同一視。ファイルシステムでは、ディレクトリとファイルが入れ子になっている。ディレクトリとファイルは異なるものですが、「ディレクトリに入るもの」とみなしている。 Leaf(葉):MyFile中身Composite(複合体):MyDirectory容器Component:En…

Mementoパターン

状態を保存しておいて、復元できるようにしておく。undo,redo,history,snapshot 復元するためにインスタンスの内部情報を公開すると、カプセル化の破壊になるので、インタフェースを使い分ける。 Originator(作成者):Gamer自分の現在の状態を保存したいと…

Strategyパターン

アルゴリズムをごっそり切り替える Strategy(戦略):Strategyインタフェースを規定ConcreteStrategy(具体的戦略):WinningStrategy、ProbStrategyContext(文脈):PlayerStrategyを利用。ConcreteStrategyのインスタンスを保持。 Hand.php class Hand { co…

Bridgeパターン

機能の階層と実装の階層を分ける 機能(メソッド)を追加したいとき、サブクラス(子クラス、派生クラス、拡張クラス)をつくるさらに機能を追加する場合、さらに階層が深くなる Something SomethingGood SomethingBetter 抽象クラスでインタフェース(API)…

Abstract Factoryパターン

抽象的な工場では、抽象的な部品を組み合わせて抽象的な製品をつくる具体的な実装には注目せず、インタフェースだけを使って、部品を組み立て、製品にまとめる 具体的な工場を新たに追加するのは簡単部品を新たに追加するのは困難(すべての具体的な工場に追…

Template Methodパターン

スーパークラスで抽象メソッドの呼び出しの流れを定め、サブクラスで具体的な処理を実装ロジックが共通化できる AbstractDisplay.php abstract class AbstractDisplay { abstract function open(); abstract function print(); abstract function close(); f…