您的位置:首页 > 其它

设计模式-门面模式

2017-02-10 11:28 141 查看
门面模式

提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使用子系统更容易使用。

 

Demo

 

/**阿里股票

 * 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();  

    }  

}  

 

$lurenA=new FacadeCompany();  

$lurenA->buy();  

$lurenA->sell();  

 

  优势:

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

 

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

 

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

 

         4)Facade模式同样也有利于简化系统在不同平台之间的移植过程,因为编译一个子系统一般不需要编译所有其他的子系统。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: