门面模式
门面模式,是指提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使得子系统更容易使用。
优点:
减少系统间依赖
提高了灵活性:不管子系统内部如何变化,只要不影响门面对象,可以自由行动。
提高了安全性:想让外界访问子系统的哪些业务就开通哪些逻辑,不在门面上开通的方法,外界就不能访问。
缺点:
门面模式最大缺点就是不符合开闭原则,对修改关闭,对扩展开放,一旦系统投产后发现问题,继承和覆写都不顶用,只能修改门面对象源码,风险较大,需要谨慎对待。
使用场景:
- 客户只需要使用某个复杂系统的子集,或者需要以一种特殊的方式与系统交互时,使用门面模式。
- 当需要跟踪原系统的使用情况时 ,使用门面模面模式。因为所有对系统的访问都经过FACADE,所以可以很容易地监视系统的使用 。
- 希望封装和隐藏原系统时。
- 编写新类的成本小于所有人使用和维护原系统使用所需的成本时
代码实现:
public class ClassA {
public void doSomethingA(){
}
}
public class ClassB {
public void doSomethingB(){
}
}
public class ClassC {
public void doSomethingC(){
}
}
public class Facade {
private ClassA classA = new ClassA();
private ClassB classB = new ClassB();
private ClassC classC = new ClassC();
public void methodA(){
this.classA.doSomethingA();
}
public void methodB(){
this.classB.doSomethingB();
}
public void methodC(){
this.classC.doSomethingC();
}
}