您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

PHP设计模式--享元模式

2024/3/11 10:48:42发布16次查看
声明:本系列博客参考资料《大话设计模式》,作者程杰。
        享元模式使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件;它适合用于只是因重复而导致使用无法令人接受的大量内存的大量物件。通常物件中的部分状态是可以分享。常见做法是把它们放在外部数据结构,当需要使用时再将它们传递给享元。
uml类图:
角色分析:
          享元工厂角色(fwfactory):创建并管理blogmodel对象。
          所有具体享元父接口角色(bolgmodel):接受并作用与外部状态。
          具体享元角色(jobsblog):具体变化点,为内部对象增加储存空间。
代码实现:
model[$name])) { echo 我是缓存里的
; return $this->model[$name]; } else { try { echo 我是新创建的
; $class=new reflectionclass($name); $this->model[$name]=$class->newinstance(); return $this->model[$name]; } catch(reflectionexception $e) { echo 你要求的对象我不能创建哦。
; 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面向对象设计模式
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product