php设计模式 Facade(外观模式)


Posted in PHP onJune 26, 2011

模式定义:外观模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式又称为门面模式,它是一种对象结构型模式。
模式结构:

php设计模式 Facade(外观模式)

外观模式的就是让client客户端以一种简单的方式来调用比较复杂的系统,来完成一件事情。

Subsystem:

class car { 
public function start() { 
print_r("车子启动"); 
} 
public function check_stop() { 
print_r("刹车检查正常"); 
} 
public function check_box() { 
print_r("检查油箱正常"); 
} 
public function check_console() { 
print_r("检查仪表盘是否异常"); 
} 
} //facade模式 
class carfacade { 
public function catgo(car $carref){ 
$carref->check_stop(); 
$carref->check_box(); 
$carref->check_console(); 
$carref->start(); 
} 
} 
//客户端可以简单的去调用。 
$car = new car(); 
$carObj = new carfacade(); 
$carObj->catgo($car);

<?php 
/** 
* 外观模式 示例 
* 
* 为子系统中的一组接口提供一个一致的界面,定义一个高层接口,使得这一子系统更加的容易使用 
*/ 
class SubSytem1 
{ 
public function Method1() 
{ 
echo "subsystem1 method1<br/>"; 
} 
} class SubSytem2 
{ 
public function Method2() 
{ 
echo "subsystem2 method2<br/>"; 
} 
} 
class SubSytem3 
{ 
public function Method3() 
{ 
echo "subsystem3 method3<br/>"; 
} 
} 
class Facade 
{ 
private $_object1 = null; 
private $_object2 = null; 
private $_object3 = null; 
public function __construct() 
{ 
$this->_object1 = new SubSytem1(); 
$this->_object2 = new SubSytem2(); 
$this->_object3 = new SubSytem3(); 
} 
public function MethodA() { 
echo "Facade MethodA<br/>"; 
$this->_object1->Method1(); 
$this->_object2->Method2(); 
} 
public function MethodB() { 
echo "Facade MethodB<br/>"; 
$this->_object2->Method2(); 
$this->_object3->Method3(); 
} 
} 
// 实例化 
$objFacade = new Facade(); 
$objFacade->MethodA(); 
$objFacade->MethodB();
PHP 相关文章推荐
模仿OSO的论坛(五)
Oct 09 PHP
一个用php实现的获取URL信息的类
Jan 02 PHP
C#静态方法与非静态方法实例分析
Sep 22 PHP
php实现的Cookies操作类实例
Sep 24 PHP
thinkphp获取栏目和文章当前位置的方法
Oct 29 PHP
php数组合并与拆分实例分析
Jun 12 PHP
windows下apache搭建php开发环境
Aug 27 PHP
在WordPress中使用PHP脚本来判断访客来自什么国家
Dec 10 PHP
Yii2前后台分离及migrate使用(七)
May 04 PHP
PHP实现的链式队列结构示例
Sep 15 PHP
使用SMB共享来绕过php远程文件包含的限制执行RFI的利用
May 31 PHP
解决laravel 表单提交-POST 异常的问题
Oct 15 PHP
php设计模式 Factory(工厂模式)
Jun 26 #PHP
php设计模式 Interpreter(解释器模式)
Jun 26 #PHP
php设计模式 Strategy(策略模式)
Jun 26 #PHP
php设计模式 Observer(观察者模式)
Jun 26 #PHP
php设计模式 Singleton(单例模式)
Jun 26 #PHP
php设计模式 Command(命令模式)
Jun 26 #PHP
php设计模式 Template (模板模式)
Jun 26 #PHP
You might like
PHP读取大文件的几种方法介绍
2016/10/27 PHP
PHP使用JpGraph绘制折线图操作示例【附源码下载】
2019/10/18 PHP
PHP isset empty函数相关面试题及解析
2020/12/11 PHP
js innerHTML 的一些问题的解决方法
2008/06/22 Javascript
jQuery实现点击该行即可删除HTML表格行
2014/10/17 Javascript
简单谈谈javascript中的变量、作用域和内存问题
2015/08/30 Javascript
JS实现输入框提示文字点击时消失效果
2016/07/19 Javascript
详解AngularJS ui-sref的简单使用
2017/04/24 Javascript
JS SetInterval 代码实现页面轮询
2017/08/11 Javascript
element 结合vue 在表单验证时有值却提示错误的解决办法
2018/01/22 Javascript
可能被忽略的一些JavaScript数组方法细节
2019/02/28 Javascript
vue+echarts实现可拖动节点的折线图(支持拖动方向和上下限的设置)
2019/04/12 Javascript
详解vue为什么要求组件模板只能有一个根元素
2019/07/22 Javascript
解决vue项目F5刷新mounted里的函数不执行问题
2019/11/05 Javascript
jQuery加PHP实现图片上传并提交的示例代码
2020/07/16 jQuery
python基础教程之lambda表达式使用方法
2014/02/12 Python
Python中使用PyHook监听鼠标和键盘事件实例
2014/07/18 Python
Python中的XML库4Suite Server的介绍
2015/04/14 Python
Python文件夹与文件的相关操作(推荐)
2016/07/25 Python
Python利用BeautifulSoup解析Html的方法示例
2017/07/30 Python
使用python为mysql实现restful接口
2018/01/05 Python
python kmeans聚类简单介绍和实现代码
2018/02/23 Python
浅谈pycharm下找不到sqlalchemy的问题
2018/12/03 Python
Django框架创建mysql连接与使用示例
2019/07/29 Python
Django的性能优化实现解析
2019/07/30 Python
Python对列表的操作知识点详解
2019/08/20 Python
Python自动化完成tb喵币任务的操作方法
2019/10/30 Python
纯CSS3实现漂亮的input输入框动画样式库(Text input love)
2018/12/29 HTML / CSS
什么是WEB控件?使用WEB控件有哪些优势?
2012/01/21 面试题
如何在Shell脚本中使用函数
2015/09/06 面试题
给物业的表扬信
2014/01/21 职场文书
模具专业求职信
2014/06/26 职场文书
爱与责任师德演讲稿
2014/08/26 职场文书
2014第二批党员干部对照“四风”找差距检查材料思想汇报
2014/09/18 职场文书
社区志愿者服务心得体会
2016/01/22 职场文书
漫画《尖帽子的魔法工坊》宣布动画化
2022/04/06 日漫