定义
要求一个子系统的外部预期内部的通信必须通过一个统一的对象进行。外观模式提供高层次的接口,使得子系统更易使用。
角色
1:外观角色(Facade)
客户端可以调用该角色的方法,该角色知晓相关子系统的功能和责任,正常情况下,本角色将所有从客户端发来的请求为派到相应的子系统,该角色没有实际的业务逻辑,只是一个委托类。
public class ClassA{
public void methodA(){}
}
public class ClassB(){
public void methodB(){}
}
public class ClassC(){
public void methodC(){}
}
2:子系统角色(SubSystem)可以同时有一个或者多个子系统,每一个子系统都不是一个单独的类,而是一个类的集合,子系统不知道外观角色的存在,对于子系统而言,外观角色仅仅是另外一个客户端而已。
public class Facade{
private ClassA a = new ClassA();
private ClassB b = new ClassB();
private ClassC c = new ClassC();
public void methodA(){
a.methodA();
}
public void methodB (){
b.methodB();
}
public void methodC(){
c.methodC();
}
}
优点
1:减少系统的相互依赖型,所有的依赖都市对Facade的依赖,与子系统无关
2:提高灵活性,不管子系统内部如何变化,只要不影响Facade对象,任何活动都是自由的
3:提高安全性,Facade中未提供的方法,外界就无法访问,提高系统安全性。
参考资料:设计模式(java)
网友评论