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危险函数(disable_functions)
Feb 23 PHP
浅谈php serialize()与unserialize()的用法
Jun 05 PHP
PHP跳转页面的几种实现方法详解
Jun 08 PHP
php导入导出excel实例
Oct 25 PHP
php导出word文档与excel电子表格的简单示例代码
Mar 08 PHP
php上传文件并显示上传进度的方法
Mar 24 PHP
PHP7.0版本备注
Jul 23 PHP
ThinkPHP实现生成和校验验证码功能
Apr 28 PHP
Laravel框架实现的记录SQL日志功能示例
Jun 19 PHP
php微信公众号开发之校园图书馆
Oct 20 PHP
PHP PDOStatement::fetchAll讲解
Jan 31 PHP
PHP实现简单注册登录系统
Dec 28 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 flv视频时间获取函数
2010/06/29 PHP
php笔记之常用文件操作
2010/10/12 PHP
yii框架中的Url生产问题小结
2012/01/16 PHP
ie与session丢失(新窗口cookie丢失)实测及解决方案
2013/07/15 PHP
PHP实现通过get方式识别用户发送邮件的方法
2015/07/16 PHP
php删除数组中重复元素的方法
2015/12/22 PHP
PHP微信开发之有道翻译
2016/06/23 PHP
PHP二分查找算法示例【递归与非递归方法】
2016/09/29 PHP
PHP中使用OpenSSL生成证书及加密解密
2017/02/05 PHP
PHP使用DOM和simplexml读取xml文档的方法示例
2017/02/08 PHP
克隆javascript对象的三个方法小结
2011/01/12 Javascript
整理一些JavaScript的IE和火狐的兼容性注意事项
2011/03/17 Javascript
javascript设计模式 接口介绍
2012/07/24 Javascript
js完美的div拖拽实例代码
2014/01/22 Javascript
JavaScript函数作用域链分析
2015/02/13 Javascript
js中的面向对象入门
2017/03/06 Javascript
微信小程序 页面跳转及数据传递详解
2017/03/14 Javascript
Angular 4依赖注入学习教程之ClassProvider的使用(三)
2017/06/04 Javascript
vue实现表格数据的增删改查
2017/07/10 Javascript
微信小程序跨页面数据传递事件响应实现过程解析
2019/12/19 Javascript
python使用socket进行简单网络连接的方法
2015/04/29 Python
Python基于lxml模块解析html获取页面内所有叶子节点xpath路径功能示例
2018/05/16 Python
Python 网络爬虫--关于简单的模拟登录实例讲解
2018/06/01 Python
Python使用cx_Freeze库生成msi格式安装文件的方法
2018/07/10 Python
Python中的相关分析correlation analysis的实现
2019/08/29 Python
Django单元测试中Fixtures的使用方法
2020/02/26 Python
如何更换python默认编辑器的背景色
2020/08/10 Python
苹果Mac升级:MacSales.com
2017/11/20 全球购物
一个J2EE项目团队的主要人员组成是什么
2012/06/04 面试题
最新的大学生找工作自我评价
2013/09/29 职场文书
九年级数学教学反思
2014/02/02 职场文书
我的大学四年规划书范文2014
2014/09/26 职场文书
会议接待欢迎词范文
2015/01/26 职场文书
无工作证明怎么写
2015/06/15 职场文书
三严三实·严以用权心得体会
2016/01/12 职场文书
外出考察学习心得体会
2016/01/18 职场文书