我们在日常中写的一些程序接口,通常散落在不同的程序代码里。在使用的时候寻找起来比较麻烦,而且改动起来也不是很方便,这是我们就需要一个统一的类来封装这些接口,以便提供给外部操作。这就是我们今天要讲的“外观模式”。
定义:外观模式就是为了子系统对外提供的一组接口提供一个统一的界面,使得其他系统对该系统的访问都通过这个统一的界面来完成。
组成:外观模式由3部分组成:抽象外观类、实现抽象外观类的具体外观类和其他子系统。
实现代码如下:
//抽象外观类
public interface Facade {
void operation1();
void operation2();
}
//具体外观类
public class CreateFacade implements Facade{
public void operation1(){
SubSystem1 sub = new SubSystem1();
//要编写的代码
}
public void operation2(){
SubSystem2 sub = new SubSystem2();
//要编写的代码
}
}
//子系统
public class OtherSystem {
public static void main(String[] args) {
Facade facade = new CreateFacade();
facade.operation1();
facade.operation2();
}
private Facade lnkFacade;
}
使用时机:当一个复杂的系统需要对外提供接口的时,就需要将对外提供的接口统一封装在一个外观类里,供外系统使用。
优点:外观模式通过提供一个统一的对外接口,避免了外部系统和子系统之间的直接联系,从而降低了系统间的依赖和复杂度。
缺点:限制了外部系统对子系统调用的灵活性,只能按照外观类中提供的方式对子系统进行调用。