PHP设计模式——门面模式

声明:本系列博客参考资料《大话设计模式》,作者程杰。

门面模式(有时候也称外观模式)是指提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使用子系统更容易使用。

案例:炒股票,新股民不了解证券知识做股票,是很容易亏钱的,需要学习的知识太多了,这样新手最好把炒股的事情委托给基金公司,基金公司了解证券知识,那么新股民把自己的股票托管给基金公司去运营,这样新股民不必了解哪只股票的走势就可以完成股票的买卖。基金公司在这里就是一个门面,针对于新股民的门面。

UML类图:

角色分析:

门面(FacadeCompany)角色:此角色封装一个高层接口,将客户端的请求代理给适当的子系统对象,是门面模式的核心接口。

子系统(ICBC)角色:实现子系统的具体功能,处理FacadeCompany对象指派的任务。子系统没有FacadeCompany的任何信息,没有对FacadeCompany对象的引用。

具体代码案例:

<?php
/**
 * Created by PhpStorm.
 * User: LYL
 * Date: 2015/5/16
 * Time: 11:07
 */

/**阿里股票
 * Class Ali
 */
class Ali
{
    function buy()
    {
        echo "买入阿里股票<br/>";
    }

    function sell()
    {
        echo "卖出阿里股票<br/>";
    }
}

/**万达股票
 * Class Wanda
 */
class Wanda
{
    function buy()
    {
        echo "买入万达股票<br/>";
    }

    function sell()
    {
        echo "卖出万达股票<br/>";
    }
}

/**京东股票
 * Class Jingdong
 */
class Jingdong
{
    function buy()
    {
        echo "买入京东股票<br/>";
    }

    function sell()
    {
        echo "卖出京东股票<br/>";
    }
}

/**门面模式核心角色
 * Class FacadeCompany
 */
class FacadeCompany
{
    private $ali;

    private $wanda;

    private $jingdong;

    function __construct()
    {
        $this->ali=new Ali();
        $this->jingdong=new Jingdong();
        $this->wanda=new Wanda();
    }

    function buy()
    {
        $this->wanda->buy();
        $this->ali->buy();
    }

    function sell()
    {
        $this->jingdong->sell();
    }
}

客户端调用代码:

header("Content-Type:text/html;charset=utf-8");
//------------------------门面模式测试代码------------------
require_once "./Facade/Facade.php";

$lurenA=new FacadeCompany();
$lurenA->buy();
$lurenA->sell();

优势:

1)它可以对客户屏蔽子系统组件,因而减少了客户处理的对象的数目并使得子系统使用起来更加方便。

2) 它实现了子系统与客户之间的松耦合关系,而子系统内部的功能组件往往是紧耦合的。松耦合关系使得子系统的组件变化不会影响到它的客户。 Facade模式有助于建立层次结构系统,也有助于对对象之间的依赖关系分层。

3)
Facade模式可以消除复杂的循环依赖关系。这一点在客户程序与子系统是分别实现的时候尤为重要。在大型软件系统中降低编译依赖性至关重要。在子系统类改变时,希望尽量减少重编译工作以节省时间。用Facade可以降低编译依赖性,限制重要系统中较小的变化所需的重编译工作。

4)Facade模式同样也有利于简化系统在不同平台之间的移植过程,因为编译一个子系统一般不需要编译所有其他的子系统。

PHP面向对象设计模式

时间: 2024-07-30 10:18:39

PHP设计模式——门面模式的相关文章

设计模式——门面模式

用于将对复杂某系统的访问统一化, 避免客户端过多的干涉某系统及其子系统. package designpattern.structure.facade; public class Facade { Subsystemclass1 s1 = new Subsystemclass1(); Subsystemclass2 s2 = new Subsystemclass2(); Subsystemclass3 s3 = new Subsystemclass3(); public void method1

5分钟读书笔记之 - 设计模式 - 门面模式

门面模式有俩个作用: 简化类的接口 消除类与使用它的客户代码之间的耦合 在javascript中,门面模式常常是开发人员最亲密的朋友.它是几乎所有javascript库的核心原则,门面模式可以使库提供的工具更容易理解.使用这种模式,程序员可以间接地与一个子系统打交道,与直接访问子系统相比,这样做更不容易出错. addEvent函数是一个基本的门面,你不用在每次为一个元素添加事件监听器的时候都得针对浏览器间的差异进行检查,有了这个便利,你可以把这个添加事件的底层细节抛在脑后,而把心思集中在如何构建

设计模式——门面模式(Facade)

要想正确理解设计模式,首先必须明确它是为了解决什么问题而提出来的. 设计模式学习笔记 --Shulin 转载请注明出处:http://blog.csdn.net/zhshulin 1.概念 门面模式是对象的结构模式,外部与一个子系统的通信必须通过一个统一的门面对象进行.门面模式提供一个高层次的接口,使得子系统更易于使用. 2.针对的问题 为子系统提供一个高层次的接口,使子系统易于使用. 适用性: 1)当你要为一个复杂子系统提供一个简单接口时.子系统往往因为不断演化而变得越来越复杂.大多数模式使用

24天学会设计模式----门面模式(外观模式)

一.门面模式 1.定义 GOF<设计模式>一书对Facade模式是这样描述的: 为子系统中的一组接口提供一个统一接口.Facade模式定义了一个更高层的接口,使子系统更加容易使用. 2.结构 门面角色:客户端可以调用这个角色的方法.此角色知道子系统的功能和责任.在正常情况下,本角色会将所有从客户端发来的请求委派到相应的子系统中去. 子系统角色:可以同时有一个或者多个子系统.每一个子系统都不是一个单独的类,而是一个类的集合.每个子系统都可以被客户端直接调用,或者被门面角色调用. 3.适用性 (1

软件开发常用设计模式—门面模式总结

facade 门面模式定义:有的人也叫它外观模式 为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这个子系统更加容易使用. 模式说明: 子系统(SubSystem):负责处理复杂的逻辑处理.不直接跟客户打交道.门面(Facade):负责跟子系统进行交互,提供简单易用的功能或接口给客户.客户(Client):通过门面和子系统进行交互,不需关心子系统的细节. 主要作用: 简化复杂接口, 解耦和来屏蔽客户端对子系统的直接访问 c++实现代码(网上大牛提供) 1 #incl

24种设计模式--门面模式【Facede Pattern】

大家都写过纸质的信件吧,比如给女朋友写情书什么的,写信的过程大家都还记得吧,先写信的内容,然后写信封,把信放到信封中,封好,投递到信箱中进行邮递,这个过程还是比较简单的,虽然简单,这四个步骤都是要跑的呀,信多了还是麻烦,比如到了情人节,为了大海捞针,给十个女孩子发情书,都要这样跑一遍,你不要累死,更别说你要发个广告信啥的,一下子发 1 千万封邮件,那不就完蛋了?那怎么办呢?还好,现在邮局开发了一个新业务,你只要把信件的必要信息告诉我,我给你发,我来做这四个过程,你就不要管了,只要把信件交给我就成

设计模式--门面模式C++实现

门面模式C++实现 1定义facade 要求一个子系统的外部接口与其内部的通信必须通过一个统一的接口进行.门面模式提供一个高层次的接口,使得子系统更容易视同 注:门面模式注重统一对象,也就是提供一个访问子系统的接口,除了这个接口不允许有任何访问子系统的行为产生 2类图 facade门面角色,是外界访问子系统内部的唯一通道 subsystem子系统角色,可以同时是一个或者多个子系统,每个子系统不是单独的类而是一个类的集合 3实现 //子系统 class classA { public: void

javaEE设计模式——门面模式

1.本节内容 门面模式的意图介绍 门面模式带来的好处 门面模式的应用场景 实现模式的3中方式:POJO.无状态与有状态回话Bean门面 有状态与无状态回话Bean门面的重要差别 关于门面模式使用的警告以及潜在陷阱 2.门面模式简介 GoF一书中是这样描述门面模式的:"为子系统中的一组接口提供一个统一的接口".Head First Design Patterns给出了相同的解释,同时又指出,在隐藏子系统复杂性的同时,门面模式又通过一个易于使用的接口提供子系统的全部功能.其基本类图如图2-

设计模式之禅之设计模式-门面模式

一:门面模式的定义        --->门面模式(Facade Pattern)也叫做外观模式,是一种比较常用的封装模式        --->要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行.门面模式提供一个高层次的接口,使得子系统更易于使用.        --->门面模式注重“统一的对象”,也就是提供一个访问子系统的接口,除了这个接口不允许有任何访问子系统的行为发生        --->这正是我们设计所需要的模式,不改变子系统对外暴露的接口.方法,只改变内部的