一、简介
它是一种结构型模式,它为子系统的众多接口提供统一的高层接口,使子系统更容易使用。也就是底层有很多基础功能,但有时为了满足不同的业务需求,需要对其中不同的功能进行组合。
这时我们就可以定义一个中间层,用来保存不同的功能组合,每个功能组合相当于一个高层接口,可以方便调用层调用。
外观模式就有点类似于我们点肯德基时的一些套餐,每个套餐都是由不同的基础菜品组成,通过合理搭配出不同的套餐,便于顾客选择。
二、应用场景
在我们实际工作中,外观模式其实也是经常被用到。就比如当我们维护一段旧的代码时,可以将原本比较乱的一些业务逻辑整合出一个新的接口,便于调用
另外,在构建新项目时,也可以使用“外观”模式,这样既可以保持底层功能的细粒度,又可以为调用者提供方便。
三、举例
public class 外观模式 {
public static void main(String[] args) {
Facade facade=new Facade();
//通过外观模式调用组合接口A
facade.doThings1();
//通过外观模式调用组合接口B
facade.doThings2();
}
}
//外观类,相当于中间层
class Facade{
public void doThings1(){//相当于一个高层接口
SubSystemA a=new SubSystemA();
SubSystemB b=new SubSystemB();
a.methodA();
b.methodB();
}
public void doThings2(){
SubSystemA a=new SubSystemA();
SubSystemC c=new SubSystemC();
a.methodA();
c.methodC();
}
}
//子系统类,一个类最好只负责一类事情,使其满足单一职责原则
class SubSystemA{
public void methodA(){
System.out.println("执行方法A");
}
}
class SubSystemB{
public void methodB(){
System.out.println("执行方法B");
}
}
class SubSystemC{
public void methodC(){
System.out.println("执行方法C");
}
}
网友评论