PHP设计模式之:外观模式
外观模式:
外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用;
外观模式又称为门面模式,它是一种对象结构型模式。
模式结构:
外观模式就是让client客户端以一种简单的方式来调用比较复杂的系统来完成一件事情;
目的:
1、为一个复杂子系统提供简单的接口
2、减少客户端和子系统的耦合
代码实现:
示例1:
/**
* 外观模式
* 通过在必须的逻辑和方法的集合前创建简单的外观接口,外观设计模式隐藏了来自调用对象的复杂性
*/
/1**
*
* User类
* @author lzs
*
*/
class User
{
protected $userName;
protected $userAge;
public function setUserName($userName)
{
return $this->userName = $userName;
}
public function setUserAge($userAge)
{
return $this->userAge = $userAge;
}
/1**
* getUser方法
* 获取用户信息
*/
public function getUserInfo()
{
echo '用户姓名:'.$this->userName.'<br />用户年龄:'.$this->userAge;
}
}
/1**
* UserFacade外观模式类,简化获取用户getUserInfo方法的调用
*/
class UserFacade
{
public static function getUser($userInfo)
{
$User = new User();
$User->setUserName($userInfo['username']);
$User->setUserAge($userInfo['userAge']);
return $User->getUserInfo();
}
}
$userInfo = array(
'username' => 'lzs',
'userAge' => 21,
);
//简化调用类
UserFacade::getUser($userInfo);
示例2:
/**
* 外观模式
*/
/1**
* 创建多个子系统类
*/
class SubSystem1
{
public function method1()
{
echo ' subsystem1 method1<br />';
}
}
class SubSystem2
{
public function method2()
{
echo ' subsystem2 method2<br />';
}
}
class SubSystem3
{
public function method3()
{
echo ' subsystem3 method3<br />';
}
}
/1**
* 与子系统通信的外观类,
* 外部与一个子系统的通信必须通过一个统一的外观对象进行
*/
class Facade
{
private $object1 = null;
private $object2 = null;
private $object3 = null;
public function __construct()
{
$this->object1 = new SubSystem1();
$this->object2 = new SubSystem2();
$this->object3 = new SubSystem3();
}
public function methodFirst()
{
echo 'Facade methodFirst<br />';
$this->object1->method1();
$this->object2->method2();
}
public function methodSecond()
{
echo 'Facade methodSecond<br />';
$this->object2->method2();
$this->object3->method3();
}
}
$objFacade = new Facade();
$objFacade->methodFirst();
$objFacade->methodSecond();
PHP设计模式之:外观模式的更多相关文章
- 每天一个设计模式-2 外观模式(Facade)
每天一个设计模式-2 外观模式(Facade) 1.生活中的示例 客户想要购买一台电脑,一般有两种方法: 1.自己DIY,客户需要知道组成电脑的所有电子器件,并且需要熟悉那些配件,对客户要求较高. ...
- C#设计模式(11)——外观模式(Facade Pattern)
一.引言 在软件开发过程中,客户端程序经常会与复杂系统的内部子系统进行耦合,从而导致客户端程序随着子系统的变化而变化,然而为了将复杂系统的内部子系统与客户端之间的依赖解耦,从而就有了外观模式,也称作 ...
- 乐在其中设计模式(C#) - 外观模式(Facade Pattern)
原文:乐在其中设计模式(C#) - 外观模式(Facade Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 外观模式(Facade Pattern) 作者:webabcd 介绍 ...
- 设计模式之 外观模式详解(Service第三者插足,让action与dao分手)
作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 各位好,LZ今天给各位分享一 ...
- 8.4 GOF设计模式三: 外观模式 Facade
GOF设计模式三: 外观模式 Facade “现有系统”功能强大.复杂,开发“新系统”需要用到其中一部分,但又要增加一部 分新功能,该怎么办?4.1 Facade Pattern: Key Fea ...
- 北风设计模式课程---外观模式(Facade)总结
北风设计模式课程---外观模式(Facade)总结 一.总结 一句话总结: 不仅要通过视频学,还要看别的博客里面的介绍,搜讲解,搜作用,搜实例 设计模式都是对生活的抽象,比如用户获得装备,我可以先装备 ...
- js设计模式——2.外观模式
js设计模式——2.外观模式
- python设计模式之外观模式
python设计模式之外观模式 系统会随着演化变得非常复杂,最终形成大量的(并且有时是令人迷惑的)类和交互,这种情况并不少见.许多情况下,我们并不想把这种复杂性暴露给客户端.外观设计模式有助于隐藏系统 ...
- java设计模式之外观模式(门面模式)
针对外观模式,在项目开发和实际运用中十分频繁,但是其极易理解,下面就简要介绍一下. 一.概念介绍 外观模式(Facade),他隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的接口.这种类型的设计 ...
- 【GOF23设计模式】外观模式
来源:http://www.bjsxt.com/ 一.[GOF23设计模式]_外观模式.公司注册流程.迪米特法则 package com.test.facade; public interface 工 ...
随机推荐
- 进程与线程(四) linux进程间通信的方式总结
1概述: 上文说到,每个进程都有自己的地址空间,包括什么呢?向下生长得栈,向上生长的堆,代码段,数据段等,这些都是进程私有的,如何实现通信的呢?通信需要媒介,这个媒介很重要. 对于研发人员来说,进程不 ...
- poj 1556 The Doors(线段相交,最短路)
The Doors Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 7430 Accepted: 2915 Descr ...
- HTML5与CSS3权威指南.pdf4
拖放API HTML5实现了直接拖放操作API,简化HTML4利用mousedown.mousemove等事件实现的操作 实现拖放的步骤 1要将被拖动元素的draggable属性设置为true,img ...
- 每隔一段时间执行一次函数。window.setTimeout
timer2 = window.setTimeout("showTaxi()", 30000);//30秒从后台获取一次数据,显示在地图上. 原来试过 setInterval . ...
- puppet任务计划
- 腾讯sdk配置
android-mirror.bugly.qq.com
- Quartz定时任务学习(四)调度器
org.quartz.Scheduler 类层次 作为一个 Quartz 用户,你要与实现了 org.quartz.Scheduler 接口的类交互.在你调用它的任何 API 之前,你需要知道如何创建 ...
- Hadoop 2.4.0新特性介绍
在2014年4月7日,Apache公布了Hadoop 2.4.0 .相比于hadoop 2.3.0,这个版本号有了一定的改进,突出的变化能够总结为下列几点(官方文档说明): 1 支持HDFS訪问控制列 ...
- android 60 发送短信
import android.os.Bundle; import android.app.Activity; import android.telephony.SmsManager; import a ...
- pcap的pcap_dump()保存的文件格式
(2009-09-01 20:36:49) 转载▼ 标签: 杂谈 分类: 专业 首先是tcpdump文件格式 当你在Windows或者Linux环境下用tcpdump命令抓取数据包时,你将得到如下格式 ...