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 相关文章推荐
BBS(php &amp; mysql)完整版(二)
Oct 09 PHP
使用PHP数组实现无限分类,不使用数据库,不使用递归.
Dec 09 PHP
详解PHP显示MySQL数据的三种方法
Jun 05 PHP
PHP准确取得服务器IP地址的方法
Jun 02 PHP
php自定义函数实现二维数组排序功能
Jul 20 PHP
php结合md5的加密解密算法实例
Sep 30 PHP
PHP实现的统计数据功能详解
Dec 06 PHP
PHP开发的微信现金红包功能示例
Jun 29 PHP
PHP实现按之字形顺序打印二叉树的方法
Jan 16 PHP
PHP关于foreach复制知识点总结
Jan 28 PHP
php 使用 __call实现重载功能示例
Nov 18 PHP
PHP程序员简单的开展服务治理架构操作详解(二)
May 14 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
DC四月将推出百页特刊漫画 纪念小丑诞生80周年
2020/04/09 欧美动漫
基于Zend的Config机制的应用分析
2013/05/02 PHP
php按字符无乱码截取中文的方法
2015/03/27 PHP
老生常谈PHP面向对象之解释器模式
2017/05/17 PHP
PHP封装的PDO数据库操作类实例
2017/06/21 PHP
PHP排序算法之归并排序(Merging Sort)实例详解
2018/04/21 PHP
PHP7 新增功能
2021/03/09 PHP
基于JavaScript实现继承机制之调用call()与apply()的方法详解
2013/05/07 Javascript
JS取文本框中最小值的简单实例
2013/11/29 Javascript
纯css+js写的一个简单的tab标签页带样式
2014/01/28 Javascript
jquery实现一个简单好用的弹出框
2014/09/26 Javascript
Js实现无刷新删除内容
2015/04/29 Javascript
JS实现随机乱撞彩色圆球特效的方法
2015/05/05 Javascript
JavaScript实现上下浮动的窗口效果代码
2015/10/12 Javascript
Vue键盘事件用法总结
2017/04/18 Javascript
详解在vue-cli项目中安装node-sass
2017/06/21 Javascript
使用weixin-java-miniapp配置进行单个小程序的配置详解
2019/03/29 Javascript
[43:32]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
Python解决鸡兔同笼问题的方法
2014/12/20 Python
浅析Python中的多重继承
2015/04/28 Python
python获取当前运行函数名称的方法实例代码
2017/04/06 Python
Python数据抓取爬虫代理防封IP方法
2018/12/23 Python
Python使用正则表达式分割字符串的实现方法
2019/07/16 Python
python定时任务 sched模块用法实例
2019/11/04 Python
python实现将中文日期转换为数字日期
2020/07/14 Python
python 实现超级玛丽游戏
2020/11/25 Python
浅谈CSS3特性查询(Feature Query: @supports)功能简介
2017/07/31 HTML / CSS
通过Canvas及File API缩放并上传图片完整示例
2013/08/08 HTML / CSS
H5 canvas实现贪吃蛇小游戏
2017/07/28 HTML / CSS
JD Sports丹麦:英国领先的运动时尚零售商
2020/11/24 全球购物
C语言笔试集
2012/07/24 面试题
Linux内核的同步机制是什么?主要有哪几种内核锁
2016/07/11 面试题
写给医生的感谢信
2015/01/22 职场文书
2015年大学团支部工作总结
2015/05/13 职场文书
一些让Python代码简洁的实用技巧总结
2021/08/23 Python
使用RedisTemplat实现简单的分布式锁
2021/11/20 Redis