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 相关文章推荐
模仿OSO的论坛(一)
Oct 09 PHP
一个简单的PHP&MYSQL留言板源码
Jul 19 PHP
PHP 文件上传进度条的两种实现方法的代码
Nov 25 PHP
php 文件状态缓存带来的问题
Dec 14 PHP
php操作SVN版本服务器类代码
Nov 27 PHP
工厂模式在Zend Framework中应用介绍
Jul 10 PHP
PHP-redis中文文档介绍
Feb 07 PHP
ThinkPHP公共配置文件与各自项目中配置文件组合的方法
Nov 24 PHP
php实现读取手机客户端浏览器的类
Jan 09 PHP
PHP实现通过正则表达式替换回调的内容标签
Jun 15 PHP
基于PHP实现用户注册登录功能
Oct 14 PHP
php intval函数用法总结
Apr 14 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中__get()和__set()的用法实例详解
2013/06/04 PHP
php提交表单发送邮件的方法
2015/03/20 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
2020/02/21 PHP
ThinkPHP5框架中使用JWT的方法示例
2020/06/03 PHP
jQuery 动画基础教程
2008/12/25 Javascript
纯JS实现五子棋游戏兼容各浏览器(附源码)
2013/04/24 Javascript
Function.prototype.bind用法示例
2013/09/16 Javascript
jQuery中bind,live,delegate与one方法的用法及区别解析
2013/12/30 Javascript
jquery实现的鼠标拖动排序Li或Table
2014/05/04 Javascript
JavaScript日期时间格式化函数分享
2014/05/05 Javascript
七个很有意思的PHP函数
2014/05/12 Javascript
jquery插件corner实现圆角边框的方法
2015/03/09 Javascript
使用AngularJS和PHP的Laravel实现单页评论的方法
2015/06/19 Javascript
js实现网站最上边可关闭的浮动广告条代码
2015/09/04 Javascript
JavaScript自学笔记(必看篇)
2016/06/23 Javascript
JQuery控制DIV的选取实现方法
2016/09/18 Javascript
Ajax异步文件上传与NodeJS express服务端处理
2017/04/01 NodeJs
js控制文本框禁止输入特殊字符详解
2017/04/07 Javascript
浅谈angular4.0中路由传递参数、获取参数最nice的写法
2018/03/12 Javascript
解决vue axios的封装 请求状态的错误提示问题
2018/09/25 Javascript
浅谈JavaScript闭包
2019/04/09 Javascript
Node 搭建一个静态资源服务器的实现
2019/05/20 Javascript
JavaScript用document.write()输出换行的示例代码
2020/11/26 Javascript
[03:37]2014DOTA2国际邀请赛 主赛事第一日胜者组TOPPLAY
2014/07/19 DOTA
[48:30]LGD vs infamous Supermajor小组赛D组 BO3 第一场 6.3
2018/06/04 DOTA
Python如何获取文件指定行的内容
2020/05/27 Python
基于K.image_data_format() == 'channels_first' 的理解
2020/06/29 Python
介绍一下linux文件系统分配策略
2013/02/25 面试题
前厅收银主管岗位职责
2014/02/04 职场文书
学校消防演习方案
2014/02/19 职场文书
企业文化建设实施方案
2014/03/22 职场文书
开工典礼策划方案
2014/05/23 职场文书
2014年党的群众路线活动个人整改措施
2014/10/28 职场文书
2015年度培训工作总结范文
2015/04/02 职场文书
国博复兴之路观后感
2015/06/02 职场文书
MyBatis自定义SQL拦截器示例详解
2021/10/24 Java/Android