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 相关文章推荐
PHP session常见问题集锦及解决办法总结
Mar 18 PHP
php通过COM类调用组件的实现代码
Jan 11 PHP
windows环境下php配置memcache的具体操作步骤
Jun 09 PHP
eAccelerator的安装与使用详解
Jun 13 PHP
php.ini中的request_order推荐设置
May 10 PHP
Ubuntu下安装PHP的mongodb扩展操作命令
Jul 04 PHP
php给图片添加文字水印方法汇总
Aug 27 PHP
详解Window7 下开发php扩展
Dec 31 PHP
round robin权重轮循算法php实现代码
May 28 PHP
PHP中获取文件创建日期、修改日期、访问时间的方法
Nov 05 PHP
Laravel 不同生产环境服务器的判断实践
Oct 15 PHP
PHP7 新增功能
Mar 09 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获取网页内容方法总结
2008/12/04 PHP
php 遍历数据表数据并列表横向排列的代码
2009/09/05 PHP
PHP生成网页快照 不用COM不用扩展.
2010/02/11 PHP
PHP中数组合并的两种方法及区别介绍
2012/09/14 PHP
浅谈PHP array_search 和 in_array 函数效率问题
2019/10/15 PHP
jQuery使用手册之三 CSS操作
2007/03/24 Javascript
读jQuery之八 包装事件对象
2011/06/21 Javascript
jquery easyui滚动条部分设置介绍
2013/09/12 Javascript
jQuery实用函数用法总结
2014/08/29 Javascript
动态加载jQuery的方法
2015/06/16 Javascript
Jquery实现瀑布流布局(备有详细注释)
2015/07/31 Javascript
jQuery实现选中弹出窗口选择框内容后赋值给文本框的方法
2015/11/23 Javascript
小巧强大的jquery layer弹窗弹层插件
2015/12/06 Javascript
javascript实现页面滚屏效果
2017/01/17 Javascript
拖动时防止选中
2017/02/03 Javascript
基于JavaScript实现简单的音频播放功能
2018/01/07 Javascript
详解Element 指令clickoutside源码分析
2019/02/15 Javascript
javascript中call()、apply()的区别
2019/03/21 Javascript
微信小程序中使用Async-await方法异步请求变为同步请求方法
2019/03/28 Javascript
原生JS实现九宫格抽奖
2020/09/13 Javascript
python SSH模块登录,远程机执行shell命令实例解析
2018/01/12 Python
Python代码块批量添加Tab缩进的方法
2018/06/25 Python
Django单元测试工具test client使用详解
2019/08/02 Python
Python pip配置国内源的方法
2020/02/14 Python
解决pymysql cursor.fetchall() 获取不到数据的问题
2020/05/15 Python
Python实现计算图像RGB均值方式
2020/06/04 Python
浅谈keras中的后端backend及其相关函数(K.prod,K.cast)
2020/06/29 Python
pyspark对Mysql数据库进行读写的实现
2020/12/30 Python
杭州SQL浙江浙大网新恩普软件有限公司
2013/07/27 面试题
个人主要事迹材料
2014/08/26 职场文书
初二学生评语大全
2014/12/26 职场文书
2015年图书馆个人工作总结
2015/05/26 职场文书
2015初中教导处工作总结
2015/07/21 职场文书
幼儿园毕业典礼园长致辞
2015/07/29 职场文书
《观潮》教学反思
2016/02/17 职场文书
聊聊Lombok中的@Builder注解使用教程
2021/11/17 Java/Android