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 mysql数据库操作分页类
Jun 04 PHP
php Ubb代码编辑器函数代码
Jul 05 PHP
使用php+apc实现上传进度条且在IE7下不显示的问题解决方法
Apr 25 PHP
浅析ThinkPHP中的pathinfo模式和URL重写
Jan 06 PHP
PHP中加密解密函数与DES加密解密实例
Oct 17 PHP
php rsa加密解密使用详解
Jan 14 PHP
PHP排序算法类实例
Jun 17 PHP
PHP实现的限制IP投票程序IP来源分析
May 04 PHP
php lcg_value与mt_rand生成0~1随机小数的效果对比分析
Apr 05 PHP
PHP中Cookie的使用详解(简单易懂)
Apr 28 PHP
Yii框架ACF(accessController)简单权限控制操作示例
Apr 26 PHP
PHP $O00OO0=urldecode & eval 解密,记一次商业源码的去后门
Sep 13 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
一个PHP实现的轻量级简单爬虫
2015/07/08 PHP
PHP asXML()函数讲解
2019/02/03 PHP
利用JQuery为搜索栏增加tag提示
2009/06/22 Javascript
javascript中onmouse事件在div中失效问题的解决方法
2012/01/09 Javascript
一个JQuery操作Table的代码分享
2012/03/30 Javascript
javascript针对DOM的应用分析(二)
2012/04/15 Javascript
JS删除数组元素的函数介绍
2013/03/27 Javascript
Jquery.addClass始终无效原因分析
2013/09/08 Javascript
jquery 按键盘上的enter事件
2014/05/11 Javascript
jQuery.parseJSON(json)将JSON字符串转换成js对象
2014/07/27 Javascript
使用js画图之圆、弧、扇形
2015/01/12 Javascript
js实现鼠标滚轮控制图片缩放效果的方法
2015/02/20 Javascript
基于jQuery实现弹幕APP
2017/02/10 Javascript
js实现字符全排列算法的简单方法
2017/05/01 Javascript
浅谈webpack编译vue项目生成的代码探索
2017/12/11 Javascript
bootstrap table支持高度百分比的实例代码
2018/02/28 Javascript
Vue数据双向绑定原理及简单实现方法
2018/05/18 Javascript
JavaScript引用类型Object常见用法实例分析
2018/08/08 Javascript
Vue弹出菜单功能的实现代码
2018/09/12 Javascript
React手稿之 React-Saga的详解
2018/11/12 Javascript
ES10 特性的完整指南小结
2019/03/04 Javascript
vue移动端使用canvas签名的实现
2020/01/15 Javascript
[03:28]2014DOTA2国际邀请赛 走近EG战队天才中单Arteezy
2014/07/12 DOTA
Python标准库与第三方库详解
2014/07/22 Python
Python深入学习之上下文管理器
2014/08/31 Python
Python实现多线程抓取妹子图
2015/08/08 Python
Python 对象中的数据类型
2017/05/13 Python
Python+matplotlib+numpy实现在不同平面的二维条形图
2018/01/02 Python
python面向对象之类属性和类方法案例分析
2019/12/30 Python
python实现批量命名照片
2020/06/18 Python
HTML5 UTF-8 中文乱码的解决方法
2013/11/18 HTML / CSS
canvas实现漂亮的下雨效果的示例
2018/04/18 HTML / CSS
关于canvas绘制模糊问题的解决方法
2019/09/24 HTML / CSS
如果重写了对象的equals()方法,需要考虑什么
2014/11/02 面试题
行政专员工作职责
2013/12/22 职场文书
员工表扬信怎么写
2015/05/05 职场文书