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 相关文章推荐
DedeCms模板安装/制作概述
Mar 11 PHP
php adodb连接带密码access数据库实例,测试成功
May 14 PHP
php列出一个目录下的所有文件的代码
Oct 09 PHP
配置php网页显示各种语法错误
Sep 23 PHP
PHP内核探索:变量概述
Jan 30 PHP
PHP与MYSQL中UTF8 中文排序示例代码
Oct 23 PHP
PHP5多态性与动态绑定介绍
Apr 03 PHP
php安装ssh2扩展的方法【Linux平台】
Jul 20 PHP
php数据库的增删改查 php与javascript之间的交互
Aug 31 PHP
总结PHP代码规范、流程规范、git规范
Jun 18 PHP
php微信公众号开发之二级菜单
Oct 20 PHP
原生PHP实现导出csv格式Excel文件的方法示例【附源码下载】
Mar 07 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 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)
2010/05/16 PHP
PHP制作3D扇形统计图以及对图片进行缩放操作实例
2014/10/23 PHP
Symfony控制层深入详解
2016/03/17 PHP
PHP strip_tags() 去字符串中的 HTML、XML 以及 PHP 标签的函数
2016/05/22 PHP
Yii2 ActiveRecord多表关联及多表关联搜索的实现
2016/06/30 PHP
PHP实现批量清空删除指定文件夹所有内容的方法
2017/05/30 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
PHP开启目录引索+fancyindex漂亮目录浏览带搜索功能
2019/09/23 PHP
按钮JS复制文本框和表格的代码
2011/04/01 Javascript
jquery实现搜索框常见效果的方法
2015/01/22 Javascript
JavaScript中的闭包介绍
2015/03/15 Javascript
jQuery的position()方法详解
2015/07/19 Javascript
学习JavaScript设计模式(链式调用)
2015/11/26 Javascript
JS onkeypress兼容性写法详解
2016/04/27 Javascript
AngularJS ngModel实现指令与输入直接的数据通信
2016/09/21 Javascript
node简单实现一个更改头像功能的示例
2017/12/29 Javascript
angular1配合gulp和bower的使用教程
2018/01/19 Javascript
vue滚动插件better-scroll使用详解
2019/10/18 Javascript
微信小程序缓存支持二次开发封装实现解析
2019/12/16 Javascript
jQuery实现全选按钮
2021/01/01 jQuery
Python中使用platform模块获取系统信息的用法教程
2016/07/08 Python
Python实现登录接口的示例代码
2017/07/21 Python
详解Python requests 超时和重试的方法
2018/12/18 Python
解决python中导入win32com.client出错的问题
2019/07/26 Python
python 函数中的参数类型
2020/02/11 Python
django ObjectDoesNotExist 和 DoesNotExist的用法
2020/07/09 Python
CSS3圆角边框和边界图片效果实例
2016/07/01 HTML / CSS
公证委托书
2014/08/01 职场文书
2014年个人师德工作总结
2014/12/04 职场文书
小学优秀班主任材料
2014/12/17 职场文书
成绩报告单家长评语
2014/12/30 职场文书
高二化学教学反思
2016/02/22 职场文书
2016年119消防宣传日活动总结
2016/04/05 职场文书
Python爬虫基础之爬虫的分类知识总结
2021/05/13 Python
CSS作用域(样式分割)的使用汇总
2021/11/07 HTML / CSS
什么是动态刷新率DRR? Windows11动态刷新率功能介绍
2021/11/21 数码科技