概念的な例
この例は、 Prototype デザインパターンの構造を説明するためのものです。 以下の質問に答えることを目的としています:
- どういうクラスからできているか?
- それぞれのクラスの役割は?
- パターンの要素同士はどう関係しているのか?
ここでパターンの構造を学んだ後だと、 これに続く、 現実世界の PHP でのユースケースが理解しやすくなります。
index.php: 概念的な例
Output.txt: 実行結果
現実的な例
Prototype パターンは、 すべてのフィールドを直接コピーしてオブジェクトを再構築する代わりに、 既存のオブジェクトを複製する便利な方法を提供します。 直接的なやり方は、 クローンされるオブジェクトのクラスに密に結合してしまうばかりか、 非公開フィールドの内容はコピーできないという問題があります。 Prototype では、 実際のクローンの作業は、 クローンされるクラス中で行われるため、 非公開フィールドへのアクセスは無制限です。
この例では、 複雑な Page オブジェクトのクローン作成に Prototype パターンを使用しています。 Page クラスには多数の非公開フィールドがありますが、 Prototype パターンのおかげで、 クローンされたオブジェクトにうまく引き継がれます。
index.php: 現実的な例
Output.txt: 実行結果