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 相关文章推荐
复杂检索数据并分页显示的处理方法
Oct 09 PHP
PHP面向对象编程快速入门
Dec 14 PHP
PHP学习笔记之二
Jan 17 PHP
php递归方法实现无限分类实例代码
Feb 28 PHP
PHP和Shell实现检查SAMBA与NFS Server是否存在
Jan 07 PHP
WIN8.1下搭建PHP5.6环境
Apr 29 PHP
编写PHP脚本使WordPress的主题支持Widget侧边栏
Dec 14 PHP
利用php抓取蜘蛛爬虫痕迹的示例代码
Sep 30 PHP
详谈PHP面向对象中常用的关键字和魔术方法
Feb 04 PHP
实例讲解PHP验证邮箱是否合格
Jan 28 PHP
Yii框架连表查询操作示例
Sep 06 PHP
PHP简单实现图片格式转换(jpg转png,gif转png等)
Oct 30 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类Class的概念
2012/06/14 PHP
浅谈Laravel队列实现原理解决问题记录
2017/08/19 PHP
Laravel如何使用数据库事务及捕获事务失败后的异常详解
2017/10/23 PHP
js跨域问题之跨域iframe自适应大小实现代码
2010/07/17 Javascript
JavaScript 匿名函数(anonymous function)与闭包(closure)
2011/10/04 Javascript
关于jQuery参考实例2.0 用jQuery选择元素
2013/04/07 Javascript
javascript实例--教你实现扑克牌洗牌功能
2014/05/15 Javascript
AngularJS初始化过程分析(引导程序)
2014/12/06 Javascript
JavaScript实现数字数组按照倒序排列的方法
2015/04/06 Javascript
详解JavaScript中getFullYear()方法的使用
2015/06/10 Javascript
jquery仿QQ登录账号选择下拉框效果
2016/03/22 Javascript
JS构造函数与原型prototype的区别介绍
2016/07/04 Javascript
浅谈js中几种实用的跨域方法原理详解
2016/12/02 Javascript
JS组件系列之MVVM组件构建自己的Vue组件
2017/04/28 Javascript
利用纯JS实现像素逐渐显示的方法示例
2017/08/14 Javascript
nodejs基于mssql模块连接sqlserver数据库的简单封装操作示例
2018/01/05 NodeJs
vue-cli脚手架-bulid下的配置文件
2018/03/27 Javascript
解决vuejs项目里css引用背景图片不能显示的问题
2018/09/13 Javascript
微信小程序wxs实现吸顶效果
2020/01/08 Javascript
javascript设计模式 ? 外观模式原理与用法实例分析
2020/04/15 Javascript
JS 5种遍历对象的方式
2020/06/16 Javascript
JavaScript this指向相关原理及实例解析
2020/07/10 Javascript
微信小程序完美解决scroll-view高度自适应问题的方法
2020/08/08 Javascript
javascript实现智能手环时间显示
2020/09/18 Javascript
[04:54]DOTA2-DPC中国联赛1月31日Recap集锦
2021/03/11 DOTA
python十进制和二进制的转换方法(含浮点数)
2018/07/07 Python
Python中正则表达式的用法总结
2019/02/22 Python
python实现飞机大战游戏
2020/10/26 Python
Python如何将将模块分割成多个文件
2020/08/04 Python
奥地利网上书店:Weltbild
2017/07/14 全球购物
计算机网络专业个人的自我评价
2013/10/17 职场文书
幼儿园辞职书
2015/02/26 职场文书
2015年教师党员个人总结
2015/11/24 职场文书
2019暑假学生安全口号
2019/06/27 职场文书
golang import自定义包方式
2021/04/29 Golang
Python List remove()实例用法详解
2021/08/02 Python