外观模式-Facade

名称:

    外观模式(Facade Pattern)-对象结构型模式

 

问题:

    The Facade pattern provides a unified interface to a group of interfaces in a subsystem. 
    The Facade pattern defines a higher-level interface that makes the subsystem easier to use because you have only one interface.

     为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

 

适用性:

    -当你要为一个复杂子系统提供一个简单接口时。

    -客户程序与抽象类的实现部分之间存在着很大的依赖性。

    -当你需要构建一个层次结构的子系统时

 

协作:

     -客户程序通过发送请求给Facade的方式与子系统通讯,Facade将这些消息转发给适当的子系统对象。尽管是子系统的有关对象在做实际工作,但facade模式本身也必需将它的接口转换成子系统的接口。

    -使用Facade的客户程序不需要直接访问子系统对象。

 

优点和缺点:

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

    2、他实现了子系统与客户之间的松耦合关系。而子系统内部的功能组件往往是紧耦合的。

    3、如果应用需要,它并不限制他们使用子系统类。

 

解决方案:

    

1、 模式的参与者

    1、Facade

    -知道哪些子系统类负责处理请求。

    -将客户的请求代理给适当的子系统对象。

    2、Subsystem classes

    -实现子系统的功能。

    -处理由Facede对象指派的任务。

    -没有facade的任何相关信息;即没有指向facade的指针。

2.实现方式

    

class Facade
{
    private SubSystem01 obj1=new SubSystem01();
    private SubSystem02 obj2=new SubSystem02();
    public void method()
    {
        obj1.method1();
        obj2.method2();
    }
}
class SubSystem01
{
    public  void method1()
    {
        
    }   
}
class SubSystem02
{
    public  void method2()
    {
        
    }   
}

 

public class FacadePattern
{
    public static void main(String[] args)
    {
        Facade f=new Facade();
        f.method();
    }
}

 

参考资料

《设计模式:可复用面向对象软件的基础》

 

posted @ 2020-06-26 10:30  diameter  阅读(108)  评论(0编辑  收藏  举报