PHP设计模式之结构模式的深入解析


Posted in PHP onJune 13, 2013

结构模式之间有许多相似之处,因为在对象模型结构中存在几种关系:类之间的继承和实现,加上对象组合,这些是PHP设计模式的主要目的。

对象组合的最大优势在于可以在运行时基于配置建立起一个关系,并不用修改实际的代码,它是类继承和接口实现需要的一个操作。实际上,你完全可以通过修改对象之间而非类之间的链接定义一个应用程序的功能,这是设计的一部分。
结构模式清单

       适配器-桥接-外观(Adapter-Bridge-Facade)

       这三个模式的目标是竞争耦合:
       ◆适配器模式(Adapter)使用不同的接口连接对象;
       ◆桥接模式(Bridge)将一个M抽象层和一个N实现层分离成N+M类,代替M*N用法;
       ◆外观模式(Facade)创建一个新的统一的界面来访问子系统。

       复合-装饰-代理(Composite-Decorator-Proxy)

       这三个模式维护相同的对象接口,它们透明地添加正交关注,客户端不会察觉:
       ◆复合模式为其它对象增加容器组织层次结构,并将树作为其它树的叶子进行重用;
       ◆装饰模式通过拦截方法授权添加行为,避免引入大量的子类;
       ◆代理模式给一个还不存在或很难访问的对象授权操作。

       最后,享元模式(Flyweight)是一个无身份的ValueObjects标准实现。

PHP 相关文章推荐
使用PHP制作新闻系统的思路
Oct 09 PHP
用Apache反向代理设置对外的WWW和文件服务器
Oct 09 PHP
BBS(php & mysql)完整版(八)
Oct 09 PHP
用PHP和ACCESS写聊天室(五)
Oct 09 PHP
ThinkPHP中URL路径访问与模块控制器之间的关系
Aug 23 PHP
php下foreach提示Warning:Invalid argument supplied for foreach()的解决方法
Nov 11 PHP
php实现SAE上使用storage上传与下载文件的方法
Jun 29 PHP
php短信接口代码
May 13 PHP
Yii2中简单的场景使用介绍
Jun 02 PHP
thinkphp5 migrate数据库迁移工具
Feb 20 PHP
PHP迭代器和生成器用法实例分析
Sep 28 PHP
gearman中任务的优先级和返回状态实例分析
Feb 27 PHP
PHP设计模式之命令模式的深入解析
Jun 13 #PHP
深入Memcache的Session数据的多服务器共享详解
Jun 13 #PHP
探讨:如何使用PHP实现计算两个日期间隔的年、月、周、日数
Jun 13 #PHP
判断php数组是否为索引数组的实现方法
Jun 13 #PHP
深入解析yii权限分级式访问控制的实现(非RBAC法)
Jun 13 #PHP
PHP 基于Yii框架中使用smarty模板的方法详解
Jun 13 #PHP
关于PHP二进制流 逐bit的低位在前算法(详解)
Jun 13 #PHP
You might like
什么是短波收听SWL
2021/03/01 无线电
BBS(php & mysql)完整版(六)
2006/10/09 PHP
按上下级层次关系输出内容的PHP代码
2010/07/17 PHP
php中namespace use用法实例分析
2016/01/22 PHP
今天你说520了吗?不仅有php表白书还有java表白神器
2016/05/20 PHP
在php7中MongoDB实现模糊查询的方法详解
2017/05/03 PHP
Laravel中10个有用的用法小结
2019/05/06 PHP
php操作redis命令及代码实例大全
2020/11/19 PHP
javascript同步Import,同步调用外部js的方法
2008/07/08 Javascript
Ext JS Grid在IE6 下宽度的问题解决方法
2009/02/15 Javascript
jquery向.ashx文件post中文乱码问题的解决方法
2011/03/28 Javascript
window.location.reload()方法刷新页面弹出要再次显示该网页对话框
2013/04/24 Javascript
JavaScript排序算法之希尔排序的2个实例
2014/04/04 Javascript
Javascript调用函数方法的几种方式介绍
2015/03/20 Javascript
ajax在兼容模式下失效的快速解决方法
2016/03/22 Javascript
IE8 内存泄露(内存一直增长 )的原因及解决办法
2016/04/06 Javascript
jQuery Ajax File Upload实例源码
2016/12/12 Javascript
C#微信小程序服务端获取用户解密信息实例代码
2017/03/10 Javascript
原生JS实现隐藏显示图片 JS实现点击切换图片效果
2021/01/27 Javascript
微信小程序wx.previewImage预览图片实例详解
2017/12/07 Javascript
菊花转动的jquery加载动画效果
2018/08/19 jQuery
[01:16:28]DOTA2-DPC中国联赛 正赛 iG vs Magma BO3 第二场 2月23日
2021/03/11 DOTA
python client使用http post 到server端的代码
2013/02/10 Python
Python中os和shutil模块实用方法集锦
2014/05/13 Python
Python 中的pygame安装与配置教程详解
2020/02/10 Python
Python Selenium截图功能实现代码
2020/04/26 Python
Html5 实现微信分享及自定义内容的流程
2019/08/20 HTML / CSS
HTML5 canvas基本绘图之图形组合
2016/06/27 HTML / CSS
IGK Hair官网:喷雾、洗发水、护发素等
2020/11/03 全球购物
JSF的标签库有哪些
2012/04/27 面试题
《小小竹排画中游》教学反思
2014/02/26 职场文书
团队队名口号大全
2014/06/06 职场文书
2014年宣传部工作总结
2014/11/12 职场文书
2014年前台个人工作总结
2014/11/14 职场文书
乔布斯辞职信(中英文对照)
2015/05/12 职场文书
河童之夏观后感
2015/06/11 职场文书