php享元模式
来源:互联网 发布:c 程序员用mac好吗 编辑:程序博客网 时间:2024/06/05 09:57
CleverCode最近在看享元模式。
(2) 具体享元角色:实现抽象角色规定的方法。如果存在内蕴状态,就负责为内蕴状态提供存储空间。
(3) 享元工厂角色:负责创建和管理享元角色。要想达到共享的目的,这个角色的实现是关键!
(4) 客户端角色:维护对所有享元对象的引用,而且还需要存储对应的外蕴状态。
1 模式介绍
运用共享技术有效的支持大量细粒度的对象2 模式中的角色
(1) 抽象享元角色:为具体享元角色规定了必须实现的方法,而外蕴状态就是以参数的形式通过此方法传入。在Java中可以由抽象类、接口来担当。(2) 具体享元角色:实现抽象角色规定的方法。如果存在内蕴状态,就负责为内蕴状态提供存储空间。
(3) 享元工厂角色:负责创建和管理享元角色。要想达到共享的目的,这个角色的实现是关键!
(4) 客户端角色:维护对所有享元对象的引用,而且还需要存储对应的外蕴状态。
3 模式结构
4 项目
4.1 需求
设计一个网站可以共享,但是用户可以不同的场景。
4.2 源码
<?php/*** php享元模式* copyright (c) http://blog.csdn.net/CleverCode **///外部变化class User{/*{{{*/ public $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; }}/*}}}*/abstract class WebSite{/*{{{*/ abstract function myUse(User $user);}/*}}}*///具体的网站class ConWebSite extends WebSite{/*{{{*/ private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } function myUse(User $user) { echo "网站:".$this->name." 用户:".$user->getName()."\r\n"; }}/*}}}*///工厂class WebSiteFactory{/*{{{*/ private $hash = array(); public function getWebSite($key) { if(false == isset($this->hash[$key])) { $this->hash[$key] = new ConWebSite($key); } return $this->hash[$key]; }}/*}}}*/class Client{/*{{{*/ public static function main($argv) { $webSiteFactory = new WebSiteFactory(); $boke = $webSiteFactory->getWebSite('博客'); $boke->myUse(new User('张三')); $weiBo = $webSiteFactory->getWebSite('微博'); $weiBo->myUse(new User('王五')); $boke2 = $webSiteFactory->getWebSite('博客'); $boke2->myUse(new User('李四')); }}/*}}}*/Client::main($argv);?>
4.3 结果展示
1 0
- php享元模式
- php设计模式 FlyWeight (享元模式)
- PHP设计模式-享元模式
- PHP设计模式-享元模式
- 用PHP实现享元FlyWeight模式
- php、java 实现享元模式
- 享元模式及php实现
- PHP草根论之设计模式-享元模式
- PHP设计模式——享元模式
- PHP设计模式系列(二十一):享元模式
- 深入浅出享元模式
- 享元模式
- 享元(FlyWeight)模式
- 享元模式
- 享元模式
- 享元模式
- 享元模式
- 享元模式Flyweight
- 自认为不错的注释习惯
- CMFCColorDialog弹不出来或者CMFCColorButton的Other按钮无效
- csv 文件导入 MySQL 遇到的转义字符问题
- 改善C#程序的建议4:C#中标准Dispose模式的实现
- 自定义ImageView(实现图片的放大缩小;放大后可平移)
- php享元模式
- Android的消息机制
- iOS备忘录之查看真机沙盒文件
- poj 1088 滑雪 动态规划(记忆化搜索)
- 【读书笔记】iOS设计模式解析(第二章)
- 勾股数的一些性质
- 【图论最短路】【CQBZOJ 2431】Trick
- Kubernetes实践(1)--环境搭建
- 软件测试(第2版)_Paul学习02_01——Ch1测试概述_02