美文网首页
PHP设计模式-享元模式

PHP设计模式-享元模式

作者: 木有sky | 来源:发表于2019-02-17 10:08 被阅读0次

适用性

php享元(轻量级)模式

就是缓存了创建型模式创建的对象,不知道为什么会归在结构型模式中,个人觉得创建型模式更合适,哈哈~

其次,享元强调的缓存对象,外观模式强调的对外保持简单易用,是不是就大体构成了目前牛逼哄哄且满大的街【依赖注入容器】

下面我们借助最简单的’工厂模式‘来实现享元模式,就是给工厂加了个缓存池

UML

代码示例

/**

* 农场

*

* 生产动物

*/

class Farm

{

  /**

  * 对象缓存池

  * @var array

  */

  private $_farmMap = [];

  /**

  * 构造函数

  */

  public function __construct()

  {

    echo "-----------初始化了一个农场----------- \n\n";

  }

  /**

  * 生产方法

  *

  * 生产农物

  *

  * @param  string $type 农场类型

  * @return mixed

  */

  public function produce($type='')

  {

    // 对象缓存池判断

    if (key_exists($type, $this->_farmMap)) {

      echo "来自缓存池-> ";

      return $this->_farmMap[$type];// 返回缓存

    }

    switch ($type) {

      case 'chicken':

        return $this->_farmMap[$type] =  new Chicken();

        break;

      case 'pig':

        return $this->_farmMap[$type] =  new Pig();

        break;

      default:

        echo "该农场不支持生产该农物~ \n";

        break;

    }

  }

}

/**

* 动物接口

*/

interface AnimalInterface

{

  /**

  * 类型获取

  *

  * @return string

  */

  public function getType();

}

/**

* 实体鸡

*

*/

class Chicken implements AnimalInterface

{

  /**

  * 类别

  * @var string

  */

  private $_type = '';

  /**

  * 构造函数

  */

  public function __construct()

  {

  }

  /**

  * 类型获取

  *

  * @return string

  */

  public function getType()

  {

    echo "这是只鸡~ \n";

  }

}

/**

* 实体猪

*

*/

class Pig implements AnimalInterface

{

  /**

  * 类别

  * @var string

  */

  private $_type = '';

  /**

  * 构造函数

  */

  public function __construct()

  {

  }

  /**

  * 类型获取

  *

  * @return string

  */

  public function getType()

  {

    echo "这是只猪~ \n";

  }

}

// 初始化一个工厂

$farm = new Farm();

//-----------初始化了一个农场-----------

// 成产一只鸡

$farm->produce('chicken')->getType();

//这是只鸡~

// 再生产一只鸡

$farm->produce('chicken')->getType();

//来自缓存池-> 这是只鸡~

// 成产一只猪

$farm->produce('pig')->getType();

//这是只猪~

// 再生产一只猪

$farm->produce('pig')->getType();

//来自缓存池-> 这是只猪~

相关文章

  • 好程序员Java培训​分享java设计模式之享元模式

    好程序员Java培训​分享java设计模式之享元模式,Java设计模式中的享元模式。享元模式有点类似于单例...

  • PHP设计模式-享元模式

    适用性 php享元(轻量级)模式 就是缓存了创建型模式创建的对象,不知道为什么会归在结构型模式中,个人觉得创建型模...

  • Java设计模式——享元模式

    Java设计模式之享元模式 这期跟大家聊的的设计模式是享元模式,该模式也是结构模式。 简介 利用共享的方式解决大量...

  • Java设计模式_享元模式

    点击链接跳转:设计模式——享元模式

  • PHP 完整实战23种设计模式

    PHP实战创建型模式 单例模式 工厂模式 抽象工厂模式 原型模式 建造者模式 PHP实战结构型模式 桥接模式 享元...

  • 二十一、享元模式

    1. 何为享元模式 定义:通过共享已存在的对象,减少创建对象内存开销的设计模式被称为享元模式。 享元模式和单例模式...

  • 享元模式

    swift实战-享元模式 概论:通过共享已存在的对象,减少创建对象内存开销的设计模式被称作享元模式 享元模式Fly...

  • 好程序员Java培训精讲  java设计模式—享元模式

    好程序员Java培训精讲 java设计模式—享元模式 一、关于享元模式 享元模式有点类似于单例模式,都是只生成一个...

  • Java设计模式系列-享元模式

    原创文章,转载请标注出处:《Java设计模式系列-享元模式》 一、概述 享元模式:“享”就是分享之意,指一物被众人...

  • Android 享元模式

    Android 设计模式系列文章 Android 23种设计模式 一、前言 享元模式即:Flyweight,它是对...

网友评论

      本文标题:PHP设计模式-享元模式

      本文链接:https://www.haomeiwen.com/subject/crrieqtx.html