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实现文件上传二法
Oct 09 PHP
hessian 在PHP中的使用介绍
Dec 13 PHP
ThinkPHP3.1新特性之内容解析输出详解
Jun 19 PHP
php类中的各种拦截器用法分析
Nov 03 PHP
javascript some()函数用法详解
Nov 13 PHP
PHP图片处理之图片背景、画布操作
Nov 19 PHP
推荐5款跨平台的PHP编辑器
Dec 25 PHP
解决Yii2邮件发送结果返回成功,但接收不到邮件的问题
May 23 PHP
关于PHP转换超过2038年日期出错的问题解决
Jun 28 PHP
php解决crontab定时任务不能写入文件问题的方法分析
Sep 16 PHP
Yii框架where查询用法实例分析
Oct 22 PHP
php 输出缓冲 Output Control用法实例详解
Mar 03 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向浏览器输出内容的4个函数总结
2014/11/17 PHP
PHP5.3新特性小结
2016/02/14 PHP
php使用include 和require引入文件的区别
2017/02/16 PHP
PHP receiveMail实现收邮件功能
2018/04/25 PHP
windows环境下使用Composer安装ThinkPHP5
2018/05/18 PHP
javascript在myeclipse中报错的解决方法
2013/10/29 Javascript
谷歌浏览器不支持showModalDialog模态对话框的解决方法
2014/09/22 Javascript
JavaScript实现的字符串replaceAll函数代码分享
2015/04/02 Javascript
jquery实现模拟百分比进度条渐变效果代码
2015/10/29 Javascript
Bootstrap实现默认导航栏效果
2020/09/21 Javascript
JavaScript学习笔记之ES6数组方法
2016/03/25 Javascript
EXT中单击button按钮grid添加一行(光标位置可设置)的实例代码
2016/06/02 Javascript
jQuery验证表单格式的使用方法
2017/01/10 Javascript
JavaScript模板引擎应用场景及实现原理详解
2018/12/14 Javascript
JavaScript实现页面高亮操作提示和蒙板
2021/01/04 Javascript
详解Python中用于计算指数的exp()方法
2015/05/14 Python
python 中的list和array的不同之处及转换问题
2018/03/13 Python
nohup后台启动Python脚本,log不刷新的解决方法
2019/01/14 Python
Python的对象传递与Copy函数使用详解
2019/12/26 Python
使用 tf.nn.dynamic_rnn 展开时间维度方式
2020/01/21 Python
Tensorflow设置显存自适应,显存比例的操作
2020/02/03 Python
python 线性回归分析模型检验标准--拟合优度详解
2020/02/24 Python
更新升级python和pip版本后不生效的问题解决
2020/04/17 Python
Python标准库:内置函数max(iterable, *[, key, default])说明
2020/04/25 Python
HTML5 canvas基本绘图之图形组合
2016/06/27 HTML / CSS
常用的HTML5列表标签
2017/06/20 HTML / CSS
床上用品全球在线购物:BeddingInn
2016/12/18 全球购物
海洋科学专业求职信
2014/08/10 职场文书
体育教师个人工作总结
2015/02/09 职场文书
2015年教师工作总结范文
2015/03/31 职场文书
2015年农村党员公开承诺事项
2015/04/28 职场文书
新年晚会主持词开场白
2015/05/28 职场文书
我在伊朗长大观后感
2015/06/16 职场文书
中学生运动会广播稿
2015/08/19 职场文书
python 遍历磁盘目录的三种方法
2021/04/02 Python
css实现左上角飘带效果的完整代码
2022/03/18 HTML / CSS