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 分库分表hash算法
Nov 12 PHP
上传文件先创建目录 再上传到目录里面去
Dec 29 PHP
PHP中header和session_start前不能有输出原因分析
Jan 11 PHP
php使用PDO方法详解
Dec 27 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
Dec 08 PHP
PHP is_array() 检测变量是否是数组的实现方法
Jun 13 PHP
3种方法轻松处理php开发中emoji表情的问题
Jul 18 PHP
php+ajax+json 详解及实例代码
Dec 12 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
Sep 16 PHP
yii2多图上传组件的使用教程
May 10 PHP
php中文语义分析实现方法示例
Sep 28 PHP
PHP设计模式之组合模式定义与应用示例
Feb 01 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
PHP4实际应用经验篇(8)
2006/10/09 PHP
Array of country list in PHP with Zend Framework
2011/10/17 PHP
如何使用php绘制在图片上的正余弦曲线
2013/06/08 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
jQuery下通过$.browser来判断浏览器.
2011/04/05 Javascript
Javascript Objects详解
2014/09/04 Javascript
jQuery on()方法使用技巧详解
2015/04/16 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(二)
2016/05/17 Javascript
手机端 HTML5使用photoswipe.js仿微信朋友圈图片放大效果
2016/08/25 Javascript
浅谈jQuery中Ajax事件beforesend及各参数含义
2016/12/03 Javascript
解析JavaScript数组方法reduce
2016/12/12 Javascript
js监听input输入框值的实时变化实例
2017/01/26 Javascript
bootstrap折叠调用collapse()后data-parent不生效的快速解决办法
2017/02/23 Javascript
使用gulp搭建本地服务器并实现模拟ajax
2017/04/05 Javascript
nodejs个人博客开发第四步 数据模型
2017/04/12 NodeJs
js保留两位小数方法总结
2018/01/31 Javascript
Kettle中使用JavaScrip调用jar包对文件内容进行MD5加密的操作方法
2020/09/04 Javascript
[00:23]魔方之谜解锁款式
2018/12/20 DOTA
Python处理字符串之isspace()方法的使用
2015/05/19 Python
python如何去除字符串中不想要的字符
2020/07/05 Python
python 不以科学计数法输出的方法
2018/07/16 Python
pyqt5 从本地选择图片 并显示在label上的实例
2019/06/13 Python
python定义类self用法实例解析
2020/01/22 Python
python实现快递价格查询系统
2020/03/03 Python
keras 回调函数Callbacks 断点ModelCheckpoint教程
2020/06/18 Python
什么是python的必选参数
2020/06/21 Python
基于CSS3特效之动画:animation的应用
2013/05/09 HTML / CSS
西班牙香水和化妆品连锁店:Druni
2019/05/05 全球购物
英国DIY汽车维修配件网站:DIY Car Service Parts
2019/08/30 全球购物
班组长工作职责
2013/12/25 职场文书
甘南现象心得体会
2014/09/11 职场文书
上班时间打瞌睡检讨书
2014/09/26 职场文书
乡镇干部个人整改措施思想汇报
2014/10/10 职场文书
大学生英文求职信范文
2015/03/19 职场文书
交通肇事罪辩护词
2015/05/21 职场文书
MySQL InnoDB ReplicaSet(副本集)简单介绍
2021/04/24 MySQL