一、门面模式是什么?
门面模式,是指提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使得子系统更容易使用。
二、代码实现
子系统,不同子系统处理不同的逻辑
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| public class ClassA { public void doSomethingA(){ //业务逻辑A } } public class ClassB { public void doSomethingB(){ //业务逻辑B } } public class ClassC { public void doSomethingC(){ //业务逻辑C } }
|
要使用这三个子系统的业务的时候,需要分别创建对象使用
1 2 3 4 5 6
| ClassA a = new ClassA(); a.doSomethingA(); ClassA b = new ClassB(); b.doSomethingB(); ClassA c = new ClassC(); c.doSomethingC();
|
当很多地方都用到这样的业务的时候,并且其中的业务还修改的时候,就很恼火,需要去每个地方修改,这个时候我们就可以把这些业务抽象出来提供门面进行调用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| public class Facade { //被委托的对象 private ClassA a = new ClassA(); private ClassB b = new ClassB(); private ClassC c = new ClassC(); //提供给外部访问的方法 public void methodA(){ this.a.doSomethingA(); } public void methodB(){ this.b.doSomethingB(); } public void methodC(){ this.c.doSomethingC(); } }
|
调用的时候使用
1 2
| Facade f = new Facade(); f.methodA();
|
当methodA()方法发生改变的时候,我们只需要修改methdA()方法即可,调用的地方不用调整。