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的类 功能齐全的发送邮件类
Oct 09 PHP
PHP daddslashes 使用方法介绍
Oct 26 PHP
如何让CI框架支持service层
Oct 29 PHP
discuz目录文件资料汇总
Dec 30 PHP
PHP使用PDO连接ACCESS数据库
Mar 05 PHP
YII Framework框架教程之安全方案详解
Mar 14 PHP
PHP生成短网址方法汇总
Jul 12 PHP
php求今天、昨天、明天时间戳的简单实现方法
Jul 28 PHP
php-fpm.conf配置文件中文说明详解及重要参数说明
Oct 10 PHP
PHP常用工具函数小结【移除XSS攻击、UTF8与GBK编码转换等】
Apr 27 PHP
PHP利用pdo_odbc实现连接数据库示例【基于ThinkPHP5.1搭建的项目】
May 13 PHP
laravel-admin的多级联动方法
Sep 30 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文件读取方法实例分析
2015/06/20 PHP
PHP中Enum(枚举)用法实例详解
2015/12/07 PHP
WordPress中获取所使用的模板的页面ID的简单方法
2015/12/31 PHP
PHP封装的MSSql操作类完整实例
2016/05/26 PHP
老生常谈文本文件和二进制文件的区别
2017/02/27 PHP
PHP获取路径和目录的方法总结【必看篇】
2017/03/04 PHP
浅谈PHP实现大流量下抢购方案
2017/12/15 PHP
PHP中PDO事务处理操作示例
2018/05/02 PHP
laravel 5.3 单用户登录简单实现方法
2019/10/14 PHP
JavaScript入门教程(9) Document文档对象
2009/01/31 Javascript
JavaScript String.replace函数参数实例说明
2013/06/06 Javascript
JavaScript中判断函数、变量是否存在
2015/06/10 Javascript
js实现鼠标点击左上角滑动菜单效果代码
2015/09/06 Javascript
JavaScript学习笔记之数组的增、删、改、查
2016/03/23 Javascript
Vue.js -- 过滤器使用总结
2017/02/18 Javascript
javascript数组去重常用方法实例分析
2017/04/11 Javascript
javascript中json对象json数组json字符串互转及取值方法
2017/04/19 Javascript
解决vue动态为数据添加新属性遇到的问题
2018/09/18 Javascript
Vuex 快速入门(简单易懂)
2018/09/20 Javascript
JS实现简单的表格增删
2020/01/16 Javascript
javascript单张多张图无缝滚动实例代码
2020/05/10 Javascript
React服务端渲染原理解析与实践
2021/03/04 Javascript
使用Python实现一个简单的项目监控
2015/03/31 Python
python绘制双柱形图代码实例
2017/12/14 Python
python PyTorch预训练示例
2018/02/11 Python
详解Python中的四种队列
2018/05/21 Python
学习python分支结构
2019/05/17 Python
python原类、类的创建过程与方法详解
2019/07/19 Python
使用pickle存储数据dump 和 load实例讲解
2019/12/30 Python
python判断是空的实例分享
2020/07/06 Python
浅析PyCharm 的初始设置(知道)
2020/10/12 Python
Pytorch - TORCH.NN.INIT 参数初始化的操作
2021/02/27 Python
美国领先的汽车轮胎和轮毂供应商:TireBuyer
2016/07/21 全球购物
工作批评与自我批评范文
2014/10/16 职场文书
初中地理教学反思
2016/02/19 职场文书
MySQL串行化隔离级别(间隙锁实现)
2022/06/16 MySQL