//子系统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设计模式之外观模式相关推荐

  1. 第二十二章 Caché 设计模式 享元模式

    文章目录 第二十二章 Caché 设计模式 享元模式 定义 优点 使用场景 结构图 描述 完整示例 实体类 抽象享元角色 实现享元角色 享元工厂 调用 思考 第二十二章 Caché 设计模式 享元模式 ...

  2. 20190925 On Java8 第二十二章 枚举

    第二十二章 枚举 基本 enum 特性 创建 enum 时,编译器会为你生成一个相关的类,这个类继承自 Java.lang.Enum. valueOf() 是在 Enum 中定义的 static 方法 ...

  3. 【哈工大软件构造】学习笔记10 第十章、第十一章、第十二章

    目录 第十章 面向可维护性的构造技术 1 软件维护和演化 2 可维护性的度量 3 模块化设计和模块性准则 模块划分的五个准则 模块设计的五个原则 耦合度和聚合度 4 OO设计准则:SOLID SRP ...

  4. Js高级程序设计第三版学习(十二章)

                                  Js高级程序设计第三版学习(十二章) 第十二章 DOM2和DOM3   1.样式: 访问样式属性 任何支持style特性的HTML元素都有一 ...

  5. 读书笔记-《ON JAVA 中文版》-摘要12[第十二章 集合]

    文章目录 第十二章 集合 1. 泛型和类型安全的集合 2. 基本概念 3. 添加元素组 4. 集合的打印 5. 列表List 6. 迭代器Iterators 6.1 Iterators 6.2 Lis ...

  6. stm32l0的停止模式怎么唤醒_探索者 STM32F407 开发板资料连载第二十二章 待机唤醒实验

    1)实验平台:alientek 阿波罗 STM32F767 开发板 2)摘自<STM32F7 开发指南(HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 第二十二章 待机唤醒实 ...

  7. 构建之法第十,十一,十二章阅读

    第十章经典用户和场景 虽说经典场景和经典用户很有必要去研究去效仿,但是随着时间发展,新的用户新的需求不断涌现,那该怎么平衡? 第十一章软件设计与实现 软件设计过程中,如何管理设计变更呢? 第十二章用户 ...

  8. 疯狂JAVA讲义---第十二章:Swing编程(五)进度条和滑动条

    http://blog.csdn.net/terryzero/article/details/3797782 疯狂JAVA讲义---第十二章:Swing编程(五)进度条和滑动条 标签: swing编程 ...

  9. stm32 文件系统dma大小_「正点原子NANO STM32F103开发板资料连载」第二十二章 DMA 实验...

    1)实验平台:[正点原子] NANO STM32F103 开发板 2)摘自<正点原子STM32 F1 开发指南(NANO 板-HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 ...

最新文章

  1. 一行代码开启 Winform 中的 ListView 和 DataGridView 双缓冲功能
  2. 修改oracle用户资源限制,RHEL5中安装Oracle11gR2修改用户SHELL限制、环境配置、内核参数...
  3. 将类似html数据打印机,机器人和3D打印机的架构有哪些相似之处
  4. (?i) 和 re.sub
  5. linux中使用u盘和光驱的命令_Linux学习之挂载光盘和U盘(六)
  6. 201771010126 王燕《面向对象设计 java》第十五周实验总结
  7. 2016年不容错过的十五大智能家居产品
  8. Java邮件发送:带附件 or 不带附件 is nothing
  9. 破解StarUML4.1.6
  10. python模拟抛硬币_认识概率,用python模拟掷硬币
  11. 3°、6°带高斯-克吕格投影
  12. qt调用simsimi api实现小黄鸡
  13. 计算机磁盘怎么清理,如何清理c盘空间_WinXP系统怎么清理C盘空间
  14. 如何在Mac Finder中查找/Usr 路径?
  15. HTML5期末大作业:基于HTML+CSS+JavaScript实现中国风文化传媒企业官网源码
  16. 敬业签手机版便签软件怎么绑定QQ或微信互联登录?
  17. 游戏开发中的专业术语
  18. 生产服务器制作再生龙ghost系统安装完整教程
  19. 资本冷落政令明禁,电子烟如何冬去春回?
  20. THRESH_OTSU mode: > ‘src_type == CV_8UC1 || src_type == CV_16UC1‘ > where > ‘src_type‘ is 6

热门文章

  1. leetcode 16.最接近的三数之和
  2. tcmalloc 优化 mysql_利用tcmalloc优化mysql主从
  3. 22:487-3279
  4. sqrt函数原型c语言,C语言sqrt函数的实例用法讲解
  5. Codevs 2059 逃出克隆岛
  6. app读取低功耗蓝牙设备的数据并返回数据
  7. 密码学、电子签名、电子信封以及密钥安全等
  8. 演练VC中的COMMON一族(转贴)之一
  9. 如何将FLAC格式转为MP3格式
  10. 第3讲 Android Camera2 API 概述