PHP デザイン パターン - フライウェイト パターン
免責事項: この一連のブログの参考資料は、Cheng Jie 著の「Dahua Design Pattern」です。
Flyweight モードは、共有オブジェクトを使用してメモリ使用量を最小限に抑え、できるだけ多くの同様のオブジェクトと情報を共有します。重複により許容できないほど大量のメモリを使用するだけの多数のオブジェクトに適しています。通常、オブジェクト内の状態の一部は共有できます。一般的な方法は、それらを外部データ構造に置き、必要に応じて Flyweight に渡すことです。
UML クラス図:
性格分析:
Flying Factory ロール (FWFactory): BlogModel オブジェクトを作成および管理します。
すべての特定のフライウェイト親インターフェイスの役割 (BolgModel): 外部状態を受け入れて動作します。
特定の flyweight ロール (JobsBlog): 内部オブジェクトのストレージ容量を増やすための特定の変更点。
コードの実装:
リーリー
仕事
; } } /**Lei Jun ブログ テンプレート * クラス LeiJunBlog*/ class LeiJunBlog 実装 IBlogModel { function showTime() { エコー北京時間: 17:00
; } 関数 showColor() { エコー
レイ・ジュン
; } } /**ブログ テンプレート ファクトリ * クラス BlogFactory*/ class BlogFactory { private $model=array(); function getBlogModel($name) { if(isset($this->model[$name])) { echo 私はキャッシュです内部
; return $this->model[$name]; } else { try { echo 私は新しく作成されました
; $class=new ReflectionClass($name); $this->model[$name]=$class->newInstance(); return $this->model[$name]; { echo
要求されたオブジェクトを作成できません。
; null を返します。
クライアント呼び出しコード:
リーリー
利点:
1. ランタイムオブジェクトインスタンスの数を減らし、メモリを節約します
2. 多くの「仮想」オブジェクトのステータスを一元管理します
短所:
一度実装すると、単一の論理実装は独立した個別の動作を持つことはできません
該当するシナリオ:
クラスに多数のインスタンスがあり、これらのインスタンスを同じメソッドで制御できる場合、Flyweight パターンを使用できます。
http://www.bkjia.com/PHPjc/1000540.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1000540.html技術記事 PHP デザイン パターン - Flyweight パターン ステートメント: このブログ シリーズの参考資料は、Cheng Jie 著の「Dahua Design Pattern」です。 Flyweight モードでは、共有オブジェクトを使用してメモリ使用量を可能な限り削減します...