享元模式很好的实例
2015-11-27 14:19
218 查看
参考资料:/article/1268858.html
<?php /** *享元模式 * *运用享元技术有效的支持大量细粒度的对象 */ classCD { private$_title=null; private$_artist=null; publicfunctionsetTitle($title) { $this->_title=$title; } publicfunctiongetTitle() { return$this->_title; } publicfunctionsetArtist($artist) { $this->_artist=$artist; echo'打印参数传来的实例:'.serialize($artist).'<br>'; } publicfunctiongetArtist($artist) { return$this->_artist; } } classArtist { private$_name; publicfunction__construct($name) { echo"正在实例化:".$name."<br/>"; $this->_name=$name; } publicfunctiongetName() { return$this->_name; } } classArtistFactory { private$_artists=array(); publicfunctiongetArtist($name) { if(isset($this->_artists[$name]))//传过来的参数已经被实例化了,就返回参数对应的实例 { return$this->_artists[$name]; } else { $objArtist=newArtist($name);//实例化一个对象 $this->_artists[$name]=$objArtist;//这个主要记录传过来的参数已经被实例化 return$objArtist;//返回实例 } } } //这里享元模式的研究对象是Artist类 $objArtistFactory=newArtistFactory(); $objCD1=newCD(); $objCD1->setTitle("title1"); $objCD1->setArtist($objArtistFactory->getArtist('artist1')); $objCD2=newCD(); $objCD2->setTitle("title2"); $objCD2->setArtist($objArtistFactory->getArtist('artist2')); $objCD3=newCD(); $objCD3->setTitle("title3"); $objCD3->setArtist($objArtistFactory->getArtist('artist1'));//这个artist1对象已经存在,所以“正在实例化”那句不会输出
相关文章推荐
- 关于yii2的使用demo
- iptables命令详解
- 起死回生:专治Linux各种“起不来”
- MySQL学习3-小试MySQL
- hibernate select语句
- BasicDataSource\DruidDataSource连接池使用
- netty框架的udp方式的简单实现
- Window快捷键简介
- Activity生命周期---横竖屏切换的生命周期
- 滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(11月21日~11月27日)
- iOS开发日记50-文本转语音(TTS)
- python 跳板机登录脚本
- Protractor - 怎样运行
- Windows Server 2008修改IE浏览器级别便于使用
- MFC笔记6
- 大数据批量插入数据库
- 判断String为空
- 1、jxl导入/导出excel案例,黏贴即可运行
- php读取目录及子目录下所有文件名
- Android M(6.0) 中删除Apache HTTP Client的解决方案