外观模式(Facade) 属于7种结构型模式中比较好理解的一种模式,
 主要作用是为客户端提供一个统一的接口,不需要用户自己去创建各子类然后调用他们的方法。
 好处是把子系统的逻辑和交互都隐藏了起来,缺点是每添加一个子类,都有可能要修改外观类(违反开闭原则)。

起初学习外观模式的时候有点和之前学习过的简单工厂模式混淆。
 因为它们的结构还挺像的,都是提供一个统一的接口,之后看了些资料进行了对比。

区别

简单工厂属于创建型模式,更注重创建对象,根据客户端提供的要求,创建相应的对象。
 就像是房产中介,你到了中介说要买一个二室一厅的房子,中介就给你提供一个二室一厅的房子。

外观模式更像是高级私人订制。

你到了中介说要买一个房子,中介根据各种情况的衡量,最后给你提供一个两室一厅的房子。

<?phpheader("Content-Type:text/html;charset=utf-8");
// 外观模式 index.php
require_once "Facade.php";// 实例化外观类
$Client = new Facade();// 直接调用给出方案
$Client->buy();
$Client->sell();
<?php
/**         * Created by Sublime.         * User: Ryan         * Date: 2018/1/25         * File:Facade.php         */    /** 买房 子类     *  BuyHouse        */
Class BuyHouse
{function planA(){echo "买入一室一厅的房子。<br/>";}function planB(){echo "买入两室一厅的房子。<br/>";}function planC(){echo "买入别墅。<br/>";}
}/** 卖房 子类     *  SellHouse        */
Class SellHouse
{function planA(){echo "高收益卖出房子。<br/>";}function planB(){echo "低收益卖出房子。<br/>";}
}/** 统一接口 外观类     *  Facade        */
Class Facade {private $BuyHouse;private $SellHouse;function __construct(){$this->BuyHouse = new BuyHouse();$this->SellHouse = new SellHouse();}function buy(){$this->BuyHouse->planB();}function sell(){$this->SellHouse->planA();}
}
输出结果:
买入两室一厅的房子。高收益卖出房子。

初识PHP设计模式--外观模式相关推荐

  1. Python设计模式-外观模式

    Python设计模式-外观模式 代码基于3.5.2,代码如下; #coding:utf-8 # 外观模式class AlarmSensor:def run(self):print("Alar ...

  2. 设计模式--------外观模式

    设计模式--------外观模式 介绍外观模式的四大问题 现在的写法有什么问题吗? 为什么要用外观模式? 什么是外观模式? 外观模式有什么好处? 使用一个例子进行问题的说明 假如要制作一个智能系统,要 ...

  3. [设计模式]外观模式

    1. 定义 外观模式 提供了一个统一的接口,用来访问子系统中的一群接口.外观定义了一个高层接口,让子系统更加容易使用. 外观不仅简化了系统内接口的使用,也将客户从组件中的子系统中解耦,外观和适配器都可 ...

  4. Java设计模式---外观模式

    外观模式(Facade) 外观模式的意图是:为子系统提供一个接口,便于它的使用. 解释: 简单的说,外观模式就是封装多个上层应用需要的方法,使得上层调用变得简单,为上层提供简单的接口,是设计模式中一种 ...

  5. Java 设计模式——外观模式

    概述 今天要说的外观模式是一个相对简单的设计模式,而且在日常的开发中,可能你也会时常使用它,只是你可能并未想过这是一个设计模式.本文会从一些实例着手,来对本文要说明的外观模式进行尽可能全面的讲解.希望 ...

  6. Java设计模式-外观模式

    我又来了,继Java设计模式之桥接模式后,现在来到了外观模式啦,外观模式又称为门面模式啦

  7. 大话设计模式—外观模式

    外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口.这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性. 这种模式涉及 ...

  8. 设计模式 外观模式 一键电影模式

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/25837275 这个模式比较简单,嘿嘿,简单写一下. 老样子,先看 外观模式(Fa ...

  9. 8. 设计模式 外观模式 一键电影模式

    这个模式比较简单,嘿嘿,简单写一下. 老样子,先看 外观模式(Facade Pattern)定义:提供一个统一的接口,用来访问子系统中的一群接口,外观定义了一个高层的接口,让子系统更容易使用.其实就是 ...

最新文章

  1. 使用ReaderWriterLock优化文件缓存
  2. 故障处理 软件 需求_如何根据GJB 102A开展软件安全性分析 —— 下篇
  3. win10无法显示的AppData文件夹,以及隐藏的python安装
  4. kylin如何支持flink_Kylin 在腾讯的平台化及 Flink 引擎实践
  5. 由《我也能做CTO》引起的作者与读者的交流
  6. Silverlight前景One World One Silverlight
  7. 4.1_ 1_ 初识文件管理
  8. 2021杭州·云栖大会来了!门票免费预约!
  9. 计算机网络系统系统设备配置,计算机网络系统技术方案及设备配置方案
  10. 大数相关计算(c语言版)
  11. 利用css做出的图片墙效果_练习
  12. java后端服务运行原理_web服务的后台工作原理
  13. 测试与 debug 心得
  14. Linux下自动化监控内存、存储空间!
  15. 硬件设计漫谈1 —模组设计
  16. alienware 15 r2 linux驱动下载,外星人笔记本驱动-外星人Alienware驱动下载 官方版-下载啦...
  17. 赋能未来的昆腾全新Scalar存储平台
  18. 北京理工大学计算机面试题,北京理工大学自主招生面试试题综合素质答案技巧.doc...
  19. 001 | “版绘童印”——疫情时代下版画在儿童插画中应用研究 | 大学生创新训练项目申请书 | 极致技术工厂
  20. excel表格怎么调整行高和列宽_WPS图文教程:表格使用小技巧

热门文章

  1. matlab中linprog函数不能用,matlab中linprog函数
  2. Electron-vue3操作nedb数据库
  3. CentOS 安装 mysql 8.0
  4. PC端聊天机器人界面(html实现)
  5. JS模板laytpl
  6. 关于VM虚拟机无法识别USB设备的处理办法!
  7. 激活函数(5)ELU函数、PReLU函数
  8. 如何解决php网页抓取乱码问题?
  9. (转)解决“Internet Explorer 无法打开 Internet站点已终止操作”问题
  10. 宜昌一中2021高考成绩查询,宜昌一中2020年高考再创佳绩!这个成绩令人赞叹