ホームページ > バックエンド開発 > PHPチュートリアル > PHP デザイン パターン -- フライウェイト パターン

PHP デザイン パターン -- フライウェイト パターン

WBOY
リリース: 2016-06-23 13:34:36
オリジナル
802 人が閲覧しました

免責事項: この一連のブログの参考資料は、Cheng Jie 著の「Dahua Design Pattern」です。

多数のオブジェクトで使用され、重複により許容できないほど大量のメモリが使用されること。通常、オブジェクト内の状態の一部は共有できます。一般的な方法は、それらを外部データ構造に置き、必要に応じて Flyweight に渡すことです。 " ory): BlogModel オブジェクトを作成および管理します。 howalすべての特定のフライ級親インターフェイスの役割(bolgmodel):外部状態を受け入れて行動します。元共有色 (Jobsblog): 具体的な変更点は、内部オブジェクトのストレージ容量を増やすことです。


コード実装:

<?php/** * Created by PhpStorm. * User: LYL * Date: 2015/5/16 * Time: 12:00 *//**所有享元父接口角色 * Interface IBlogModel */interface IBlogModel{    function showTime();    function showColor();}/**乔布斯的博客模板 * Class JobsBlog */class JobsBlog implements IBlogModel{    function showTime()    {        echo "纽约时间:5点整<br/>";    }    function showColor()    {        echo "<div style='color: #006600;height: 30;width: 30;background-color: #898989;'>Jobs</div>";    }}/**雷军博客模板 * Class LeiJunBlog */class LeiJunBlog implements IBlogModel{    function showTime()    {        echo "北京时间:17点整<br/>";    }    function showColor()    {        echo "<div style='color:#c7254e;height: 30;width: 100;background-color: #898989;'>雷军</div>";    }}/**博客模板工厂 * Class BlogFactory */class BlogFactory{    private $model=array();    function getBlogModel($name)    {        if(isset($this->model[$name]))        {            echo "我是缓存里的<br/>";            return $this->model[$name];        }        else        {            try            {                echo "我是新创建的<br/>";                $class=new ReflectionClass($name);                $this->model[$name]=$class->newInstance();                return $this->model[$name];            }            catch(ReflectionException $e)            {                echo "<span style='color: #ff0000;'>你要求的对象我不能创建哦。</span><br/>";                return null;            }        }    }}
ログイン後にコピー

クライアント呼び出しコード:

header("Content-Type:text/html;charset=utf-8");//------------------------门面模式测试代码------------------require_once "./Flyweight/Flyweight.php";$factory=new BlogFactory();$jobs=$factory->getBlogModel("JobsBlog");if($jobs){    $jobs->showTime();    $jobs->showColor();}$jobs1=$factory->getBlogModel("JobsBlog");if($jobs1){    $jobs1->showTime();    $jobs1->showColor();}$leijun=$factory->getBlogModel("LeiJunBlog");if($leijun){    $leijun->showTime();    $leijun->showColor();}$leijun1=$factory->getBlogModel("LeiJunBlog");if($leijun1){    $leijun1->showTime();    $leijun1->showColor();}$aFanda=$factory->getBlogModel("aFanda");if($aFanda){    $aFanda->showTime();    $aFanda->showColor();}
ログイン後にコピー

利点:

1. ランタイム オブジェクト インスタンスの数を減らし、メモリ

2. たくさん組み合わせた状態「仮想」オブジェクトの集中管理
欠点: 一度実現すると、単一のロジック実装は独立した異なる動作を持たなくなる

適用シーン 同じ方法で制御できる場合、フライウェイトを使用できるモード。


PHP オブジェクト指向デザインパターン


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート