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中设置index.php文件为只读的方法
Feb 06 PHP
hadoop中一些常用的命令介绍
Jun 19 PHP
PHP的变量类型和作用域详解
Mar 12 PHP
ThinkPHP中的三大自动简介
Aug 22 PHP
php发送短信验证码完成注册功能
Nov 24 PHP
解读PHP的Yii框架中请求与响应的处理流程
Mar 17 PHP
php基于curl重写file_get_contents函数实例
Nov 08 PHP
yii2 数据库读写分离配置示例
Feb 10 PHP
PHP基于自增数据如何生成不重复的随机数示例
May 19 PHP
自写的利用PDO对mysql数据库增删改查操作类
Feb 19 PHP
PHP实现的AES加密、解密封装类与用法示例
Aug 02 PHP
Laravel timestamps 设置为unix时间戳的方法
Oct 11 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实现链式操作的核心思想
2015/06/23 PHP
适用于初学者的简易PHP文件上传类
2015/10/29 PHP
PHP钩子与简单分发方式实例分析
2017/09/04 PHP
PHP上传图片到数据库并显示的实例代码
2019/12/20 PHP
写的htc的数据表格
2007/01/20 Javascript
js获取元素在浏览器中的绝对位置
2010/07/24 Javascript
基于jquery的划词搜索实现(备忘)
2010/09/14 Javascript
jquery一般方法介绍 入门参考
2011/06/21 Javascript
jquery Ajax 实现加载数据前动画效果的示例代码
2014/02/07 Javascript
javascript实用方法总结
2015/02/06 Javascript
JavaScript DSL 流畅接口(使用链式调用)实例
2015/03/15 Javascript
JS实现左右拖动改变内容显示区域大小的方法
2015/10/13 Javascript
JS DOM实现鼠标滑动图片效果
2020/09/17 Javascript
Javascript中this绑定的3种方法与比较
2016/10/13 Javascript
详谈表单格式化插件jquery.serializeJSON
2017/06/23 jQuery
js+html制作简单日历的方法
2017/06/27 Javascript
vue.js声明式渲染和条件与循环基础知识
2017/07/31 Javascript
浅谈从React渲染流程分析Diff算法
2018/09/08 Javascript
[42:25]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第三场
2018/04/06 DOTA
python如何实现excel数据添加到mongodb
2015/07/30 Python
用Python写一段用户登录的程序代码
2018/04/22 Python
python-opencv颜色提取分割方法
2018/12/08 Python
python中如何设置代码自动提示
2020/07/15 Python
Pycharm的Available Packages为空的解决方法
2020/09/18 Python
python爬取音频下载的示例代码
2020/10/19 Python
孤独星球出版物:Lonely Planet Publications
2018/03/17 全球购物
Elemental Herbology官网:英国美容品牌
2019/04/27 全球购物
家得宝墨西哥官网:The Home Depot墨西哥
2019/11/18 全球购物
教师见习报告范文
2014/11/03 职场文书
初二英语教学反思
2016/02/15 职场文书
英语版自我评价,35句话轻松搞定
2019/10/08 职场文书
MySQL update set 和 and的区别
2021/05/08 MySQL
MySQL快速插入一亿测试数据
2021/06/23 MySQL
CentOS8.4安装Redis6.2.6的详细过程
2021/11/20 Redis
关于Nginx中虚拟主机的一些冷门知识小结
2022/03/03 Servers
Debian11 Xfce终端光标的颜色怎么设置?
2022/08/14 数码科技