第十二章 PHP设计模式之外观模式
//子系统1
class SubSystemOne
{public function methodOne(){echo "子系统方法1\n";}
}//子系统2
class SubSystemTwo
{public function methodTwo(){echo "子系统方法2\n";}
}//子系统3
class SubSystemThree
{public function methodThree(){echo "子系统方法3\n";}
}//子系统4
class SubSystemFourth
{public function methodFourth(){echo "子系统方法4\n";}
}// 外观方法
class Facade
{private $systemOne;private $systemTwo;private $systemThree;private $systemFour;function __construct(){$this->systemOne = new SubSystemOne();$this->systemTwo = new SubSystemTwo();$this->systemThree = new SubSystemThree();$this->systemFour = new SubSystemFourth();}public function methodA(){echo "方法A() ---\n";$this->systemOne->methodOne();$this->systemThree->methodThree();}public function methodB(){echo "方法B() ---\n";$this->systemTwo->methodTwo();$this->systemFour->methodFourth();}
}//客户端代码$facade = new Facade();
$facade->methodA();
$facade->methodB();
总结
外观模式,为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更容易使用。
首先,在设计初期阶段,应该要有意识的将不同的两个层分离,层与层之间建立外观Facade;其次,在开发阶段,子系统往往因为不断的重构演化而变得越来越复杂,增加外观Facade可以提供一个简单的接口,减少它们之间的依赖;另外在维护一个遗留的大型系统时,可能这个系统已经非常难以维护和扩展了,为新系统开发一个外观Facade类,来提供设计粗糙或高度复杂的遗留代码的比较清晰简单的接口,让系统与Facade对象交互,Facade与遗留代码交互所有复杂的工作
第十二章 PHP设计模式之外观模式相关推荐
- 第二十二章 Caché 设计模式 享元模式
文章目录 第二十二章 Caché 设计模式 享元模式 定义 优点 使用场景 结构图 描述 完整示例 实体类 抽象享元角色 实现享元角色 享元工厂 调用 思考 第二十二章 Caché 设计模式 享元模式 ...
- 20190925 On Java8 第二十二章 枚举
第二十二章 枚举 基本 enum 特性 创建 enum 时,编译器会为你生成一个相关的类,这个类继承自 Java.lang.Enum. valueOf() 是在 Enum 中定义的 static 方法 ...
- 【哈工大软件构造】学习笔记10 第十章、第十一章、第十二章
目录 第十章 面向可维护性的构造技术 1 软件维护和演化 2 可维护性的度量 3 模块化设计和模块性准则 模块划分的五个准则 模块设计的五个原则 耦合度和聚合度 4 OO设计准则:SOLID SRP ...
- Js高级程序设计第三版学习(十二章)
Js高级程序设计第三版学习(十二章) 第十二章 DOM2和DOM3 1.样式: 访问样式属性 任何支持style特性的HTML元素都有一 ...
- 读书笔记-《ON JAVA 中文版》-摘要12[第十二章 集合]
文章目录 第十二章 集合 1. 泛型和类型安全的集合 2. 基本概念 3. 添加元素组 4. 集合的打印 5. 列表List 6. 迭代器Iterators 6.1 Iterators 6.2 Lis ...
- stm32l0的停止模式怎么唤醒_探索者 STM32F407 开发板资料连载第二十二章 待机唤醒实验
1)实验平台:alientek 阿波罗 STM32F767 开发板 2)摘自<STM32F7 开发指南(HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 第二十二章 待机唤醒实 ...
- 构建之法第十,十一,十二章阅读
第十章经典用户和场景 虽说经典场景和经典用户很有必要去研究去效仿,但是随着时间发展,新的用户新的需求不断涌现,那该怎么平衡? 第十一章软件设计与实现 软件设计过程中,如何管理设计变更呢? 第十二章用户 ...
- 疯狂JAVA讲义---第十二章:Swing编程(五)进度条和滑动条
http://blog.csdn.net/terryzero/article/details/3797782 疯狂JAVA讲义---第十二章:Swing编程(五)进度条和滑动条 标签: swing编程 ...
- stm32 文件系统dma大小_「正点原子NANO STM32F103开发板资料连载」第二十二章 DMA 实验...
1)实验平台:[正点原子] NANO STM32F103 开发板 2)摘自<正点原子STM32 F1 开发指南(NANO 板-HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 ...
最新文章
- 一行代码开启 Winform 中的 ListView 和 DataGridView 双缓冲功能
- 修改oracle用户资源限制,RHEL5中安装Oracle11gR2修改用户SHELL限制、环境配置、内核参数...
- 将类似html数据打印机,机器人和3D打印机的架构有哪些相似之处
- (?i) 和 re.sub
- linux中使用u盘和光驱的命令_Linux学习之挂载光盘和U盘(六)
- 201771010126 王燕《面向对象设计 java》第十五周实验总结
- 2016年不容错过的十五大智能家居产品
- Java邮件发送:带附件 or 不带附件 is nothing
- 破解StarUML4.1.6
- python模拟抛硬币_认识概率,用python模拟掷硬币
- 3°、6°带高斯-克吕格投影
- qt调用simsimi api实现小黄鸡
- 计算机磁盘怎么清理,如何清理c盘空间_WinXP系统怎么清理C盘空间
- 如何在Mac Finder中查找/Usr 路径?
- HTML5期末大作业:基于HTML+CSS+JavaScript实现中国风文化传媒企业官网源码
- 敬业签手机版便签软件怎么绑定QQ或微信互联登录?
- 游戏开发中的专业术语
- 生产服务器制作再生龙ghost系统安装完整教程
- 资本冷落政令明禁,电子烟如何冬去春回?
- THRESH_OTSU mode: > ‘src_type == CV_8UC1 || src_type == CV_16UC1‘ > where > ‘src_type‘ is 6