php与设计模式-享元模式

享元模式

享元模式使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件;它适合用于只是因重复而导致使用无法令人接受的大量内存的大量物件。通常物件中的部分状态是可以分享。常见做法是把它们放在外部数据结构,当需要使用时再将它们传递给享元。

Demo

/**所有享元父接口角色
* 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;
          }

      }
  }
}
$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();
}

请关注我的订阅号

订阅号.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码哥说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值