外观模式-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(); } }
参考资料
《设计模式:可复用面向对象软件的基础》