初识PHP设计模式--外观模式
外观模式(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设计模式--外观模式相关推荐
- Python设计模式-外观模式
Python设计模式-外观模式 代码基于3.5.2,代码如下; #coding:utf-8 # 外观模式class AlarmSensor:def run(self):print("Alar ...
- 设计模式--------外观模式
设计模式--------外观模式 介绍外观模式的四大问题 现在的写法有什么问题吗? 为什么要用外观模式? 什么是外观模式? 外观模式有什么好处? 使用一个例子进行问题的说明 假如要制作一个智能系统,要 ...
- [设计模式]外观模式
1. 定义 外观模式 提供了一个统一的接口,用来访问子系统中的一群接口.外观定义了一个高层接口,让子系统更加容易使用. 外观不仅简化了系统内接口的使用,也将客户从组件中的子系统中解耦,外观和适配器都可 ...
- Java设计模式---外观模式
外观模式(Facade) 外观模式的意图是:为子系统提供一个接口,便于它的使用. 解释: 简单的说,外观模式就是封装多个上层应用需要的方法,使得上层调用变得简单,为上层提供简单的接口,是设计模式中一种 ...
- Java 设计模式——外观模式
概述 今天要说的外观模式是一个相对简单的设计模式,而且在日常的开发中,可能你也会时常使用它,只是你可能并未想过这是一个设计模式.本文会从一些实例着手,来对本文要说明的外观模式进行尽可能全面的讲解.希望 ...
- Java设计模式-外观模式
我又来了,继Java设计模式之桥接模式后,现在来到了外观模式啦,外观模式又称为门面模式啦
- 大话设计模式—外观模式
外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口.这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性. 这种模式涉及 ...
- 设计模式 外观模式 一键电影模式
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/25837275 这个模式比较简单,嘿嘿,简单写一下. 老样子,先看 外观模式(Fa ...
- 8. 设计模式 外观模式 一键电影模式
这个模式比较简单,嘿嘿,简单写一下. 老样子,先看 外观模式(Facade Pattern)定义:提供一个统一的接口,用来访问子系统中的一群接口,外观定义了一个高层的接口,让子系统更容易使用.其实就是 ...
最新文章
- 使用ReaderWriterLock优化文件缓存
- 故障处理 软件 需求_如何根据GJB 102A开展软件安全性分析 —— 下篇
- win10无法显示的AppData文件夹,以及隐藏的python安装
- kylin如何支持flink_Kylin 在腾讯的平台化及 Flink 引擎实践
- 由《我也能做CTO》引起的作者与读者的交流
- Silverlight前景One World One Silverlight
- 4.1_ 1_ 初识文件管理
- 2021杭州·云栖大会来了!门票免费预约!
- 计算机网络系统系统设备配置,计算机网络系统技术方案及设备配置方案
- 大数相关计算(c语言版)
- 利用css做出的图片墙效果_练习
- java后端服务运行原理_web服务的后台工作原理
- 测试与 debug 心得
- Linux下自动化监控内存、存储空间!
- 硬件设计漫谈1 —模组设计
- alienware 15 r2 linux驱动下载,外星人笔记本驱动-外星人Alienware驱动下载 官方版-下载啦...
- 赋能未来的昆腾全新Scalar存储平台
- 北京理工大学计算机面试题,北京理工大学自主招生面试试题综合素质答案技巧.doc...
- 001 | “版绘童印”——疫情时代下版画在儿童插画中应用研究 | 大学生创新训练项目申请书 | 极致技术工厂
- excel表格怎么调整行高和列宽_WPS图文教程:表格使用小技巧
热门文章
- matlab中linprog函数不能用,matlab中linprog函数
- Electron-vue3操作nedb数据库
- CentOS 安装 mysql 8.0
- PC端聊天机器人界面(html实现)
- JS模板laytpl
- 关于VM虚拟机无法识别USB设备的处理办法!
- 激活函数(5)ELU函数、PReLU函数
- 如何解决php网页抓取乱码问题?
- (转)解决“Internet Explorer 无法打开 Internet站点已终止操作”问题
- 宜昌一中2021高考成绩查询,宜昌一中2020年高考再创佳绩!这个成绩令人赞叹