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 相关文章推荐
PHP4引用文件语句的对比
Oct 09 PHP
php strstr查找字符串中是否包含某些字符的查找函数
Jun 03 PHP
DISCUZ在win2003环境下 Unable to access ./include/common.inc.php in... 的问题终极解决方案
Nov 21 PHP
php选择排序法实现数组排序实例分析
Feb 16 PHP
详解PHP的Yii框架的运行机制及其路由功能
Mar 17 PHP
PHP中Cookie的使用详解(简单易懂)
Apr 28 PHP
php实现保存周期为1天的购物车类
Jul 07 PHP
php实现mysql连接池效果实现代码
Jan 25 PHP
PHP echo()函数讲解
Feb 15 PHP
Laravel框架处理用户的请求操作详解
Dec 20 PHP
PHP的重载使用魔术方法代码实例详解
Feb 26 PHP
PHP实现chrome表单请求数据转换为接口使用的json数据
Mar 04 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截取字符串并保留完整xml标签的函数代码
2013/02/06 PHP
PHP中imagick函数的中文解释
2015/01/21 PHP
php中关于socket的系列函数总结
2015/05/18 PHP
PHP实现的随机IP函数【国内IP段】
2016/07/20 PHP
Laravel框架实现的使用smtp发送邮件功能示例
2019/03/12 PHP
php生成word并下载代码实例
2019/03/15 PHP
HTML IMG标签 onload 内存溢出导致浏览器CPU占用过高
2021/03/09 Javascript
面向对象的Javascript之二(接口实现介绍)
2012/01/27 Javascript
圣诞节Merry Christmas给博客添加浪漫的下雪效果基于jquery实现
2012/12/27 Javascript
js中通过split函数分割字符串成数组小例子
2013/09/21 Javascript
javascript小数精度丢失的完美解决方法
2016/05/31 Javascript
vuejs实现本地数据的筛选分页功能思路详解
2017/11/15 Javascript
使用Vue写一个datepicker的示例
2018/01/27 Javascript
vue加载自定义的js文件方法
2018/03/13 Javascript
从0到1搭建Element的后台框架的方法步骤
2019/04/10 Javascript
p5.js实现简单货车运动动画
2019/10/23 Javascript
nodemon实现Typescript项目热更新的示例代码
2019/11/19 Javascript
JS中的继承操作实例总结
2020/06/06 Javascript
微信小程序canvas动态时钟
2020/10/22 Javascript
pycharm远程调试openstack的图文教程
2017/11/21 Python
详解django中Template语言
2020/02/22 Python
Java如何基于wsimport调用wcf接口
2020/06/17 Python
django rest framework 过滤时间操作
2020/07/12 Python
Python requests及aiohttp速度对比代码实例
2020/07/16 Python
CSS3实战第一波 让我们尽情的圆角吧
2010/08/27 HTML / CSS
Ever New加拿大官网:彰显女性美
2018/10/05 全球购物
应届生求职推荐信
2013/10/28 职场文书
学生自我鉴定
2013/12/18 职场文书
小区停车场管理制度
2014/01/27 职场文书
导游个人求职信范文
2014/03/23 职场文书
出国签证在职证明范本
2014/11/24 职场文书
2015年社区教育工作总结
2015/05/13 职场文书
第二次离婚起诉书
2015/05/18 职场文书
解决Golang time.Parse和time.Format的时区问题
2021/04/29 Golang
Python数据分析之绘图和可视化详解
2021/06/02 Python
详细介绍Next.js脚手架完整搭建封装
2022/04/26 Javascript