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 相关文章推荐
PHP4中实现动态代理
Oct 09 PHP
PHP常用代码
Nov 23 PHP
Ajax+PHP快速上手及简单应用说明
Jul 24 PHP
PHP中$_FILES的使用方法及注意事项说明
Feb 14 PHP
php中mysql操作buffer用法详解
Mar 19 PHP
smarty简单应用实例
Nov 03 PHP
使用PHP similar text计算两个字符串相似度
Nov 06 PHP
php实现面包屑导航例子分享
Dec 19 PHP
ThinkPHP表单令牌错误的相关解决方法分析
May 20 PHP
php结合md5的加密解密算法实例
Sep 30 PHP
php检查函数必传参数是否存在的实例详解
Aug 28 PHP
php压缩文件夹最新版
Jul 18 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
兼容各大浏览器带关闭按钮的漂浮多组图片广告代码
2014/06/05 PHP
CodeIgniter实现从网站抓取图片并自动下载到文件夹里的方法
2015/06/17 PHP
PHP+swoole实现简单多人在线聊天群发
2016/01/19 PHP
鼠标滑上去后图片放大浮出效果的js代码
2011/05/28 Javascript
深入理解JavaScript系列(8) S.O.L.I.D五大原则之里氏替换原则LSP
2012/01/15 Javascript
关于Bootstrap弹出框无法调用问题的解决办法
2016/03/10 Javascript
webix+springmvc session超时跳转登录页面
2016/10/30 Javascript
bootstrap中的 form表单属性role=&quot;form&quot;的作用详解
2017/01/20 Javascript
jQuery实现节点的追加、替换、删除、复制功能示例
2017/07/11 jQuery
vue-cli + sass 的正确打开方式图文详解
2017/10/27 Javascript
AngularJS 将再发布一个重要版本 然后进入长期支持阶段
2018/01/31 Javascript
Node.js利用console输出日志文件的方法示例
2018/04/27 Javascript
Django+vue跨域问题解决的详细步骤
2019/01/20 Javascript
Vue学习笔记之计算属性与侦听器用法
2019/12/07 Javascript
python2.7删除文件夹和删除文件代码实例
2013/12/18 Python
Python的迭代器和生成器使用实例
2015/01/14 Python
介绍Python中内置的itertools模块
2015/04/29 Python
python基于multiprocessing的多进程创建方法
2015/06/04 Python
Python变量和字符串详解
2017/04/29 Python
pygame 精灵的行走及二段跳的实现方法(必看篇)
2017/07/10 Python
python文件特定行插入和替换实例详解
2017/07/12 Python
Python常见字符串操作函数小结【split()、join()、strip()】
2018/02/02 Python
Tensorflow 训练自己的数据集将数据直接导入到内存
2018/06/19 Python
用Python分析3天破10亿的《我不是药神》到底神在哪?
2018/07/12 Python
使用Python串口实时显示数据并绘图的例子
2019/12/26 Python
CSS3自定义滚动条样式 ::webkit-scrollbar的示例代码详解
2020/06/01 HTML / CSS
美国购买当代和现代家具网站:MODTEMPO
2018/07/20 全球购物
英国最大的户外商店:Go Outdoors
2019/04/17 全球购物
95%的面试官都会问到的50道Java线程题,附答案
2012/08/03 面试题
我的网上商城创业计划书
2013/12/26 职场文书
劳动实践课感言
2014/02/01 职场文书
自主招生自荐信指南
2014/02/04 职场文书
岗位廉洁从业承诺书
2014/03/28 职场文书
客服专员岗位职责范本
2015/04/07 职场文书
2015军训通讯稿大全
2015/07/18 职场文书
基于Redis位图实现用户签到功能
2021/05/08 Redis