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开发GUI
Oct 09 PHP
PHP 表单提交给自己
Jul 24 PHP
php 计划任务 检测用户连接状态
Mar 29 PHP
解析php中获取系统信息的方法
Jun 25 PHP
推荐几个开源的微信开发项目
Dec 28 PHP
Laravel 5框架学习之环境与配置
Apr 08 PHP
PHP中把有符号整型转换为无符号整型方法
May 27 PHP
php读取txt文件并将数据插入到数据库
Feb 23 PHP
php通过smtp邮件验证登陆的方法
May 11 PHP
CodeIgniter生成静态页的方法
May 17 PHP
yii插入数据库防并发的简单代码
May 27 PHP
Yii框架核心组件类实例详解
Aug 06 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 抓取网页图片并且另存为的实现代码
2010/03/24 PHP
php引用返回与取消引用的详解
2013/06/08 PHP
phpmyadmin中禁止外网使用的方法
2014/11/04 PHP
YII Framework框架教程之国际化实现方法
2016/03/14 PHP
PHP缓存工具XCache安装与使用方法详解
2018/04/09 PHP
js给onclick事件赋值,动态传参数实例解说
2013/03/28 Javascript
checkbox使用示例
2013/08/23 Javascript
JS遍历Json字符串中键值对先转成JSON对象再遍历
2014/08/15 Javascript
JQuery Mobile 弹出式登录框的实现方法
2016/05/28 Javascript
省市区三级联动jquery实现代码
2020/04/15 Javascript
在DWR中实现直接获取一个JAVA类的返回值的两种方法
2016/12/25 Javascript
JavaScript 动态三角函数实例详解
2017/01/08 Javascript
微信小程序 合法域名校验出错详解及解决办法
2017/03/09 Javascript
解决vue2.x中数据渲染以及vuex缓存的问题
2017/07/13 Javascript
JavaScript如何获取到导航条中HTTP信息
2017/10/10 Javascript
使用nvm管理不同版本的node与npm的方法
2017/10/31 Javascript
解决vue-cli3 使用子目录部署问题
2018/07/19 Javascript
js实现页面多个日期时间倒计时效果
2019/06/20 Javascript
python实现rest请求api示例
2014/04/22 Python
Python实现查找匹配项作处理后再替换回去的方法
2017/06/10 Python
对python中Matplotlib的坐标轴的坐标区间的设定实例讲解
2018/05/25 Python
Python实现SQL注入检测插件实例代码
2019/02/02 Python
详解Django3中直接添加Websockets方式
2020/02/12 Python
使用canvas压缩图片上传的方法示例
2020/02/07 HTML / CSS
NET程序员上机面试题
2015/05/23 面试题
C#和SQL Server的面试题
2016/08/12 面试题
幼儿园运动会加油词
2014/02/14 职场文书
《世界多美呀》教学反思
2014/03/02 职场文书
庆元旦演讲稿
2014/09/15 职场文书
群众路线查摆问题及整改措施
2014/10/10 职场文书
2014年会计主管工作总结
2014/12/20 职场文书
升学宴学生致辞
2015/07/27 职场文书
python实战之用emoji表情生成文字
2021/05/08 Python
使用RedisTemplat实现简单的分布式锁
2021/11/20 Redis
MySQL的prepare使用以及遇到的bug
2022/05/11 MySQL
javascript进阶篇深拷贝实现的四种方式
2022/07/07 Javascript