外观模式(Facade Pattern)在开发中的使用频率非常,第三方SDK一般都会使用外观模式。通过一个外观类使得整个系统的接口只有一个统一的高层接口。
要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。外观模式提供一个高层次的接口,使得子系统更易于使用。
-
为一个复杂子系统提供一个简单接口。
-
当需要构建一个层次结构的子系统时,使用Facade模式定义子系统中每层的入口点。如果子系统之间是相互依赖的,可以让它们仅通过Facade接口进行通信,从而简化了它们之间的关系。
-
Facade:系统对外的统一接口,系统内部地工作。
-
SystemA、SystemB、SystemC:子系统接口
Facade.java
public interface Facade {
void operateA();
void operateB();
void operateC();
}
FacadeImpl.java
public class FacadeImpl implements Facade {
private SystemA systemA = new SystemAImpl();
private SystemB systemB = new SystemBImpl();
private SystemC systemC = new SystemCImpl();
@Override
public void operateA() {
systemA.operateA();
}
@Override
public void operateB() {
systemB.operateB();
}
@Override
public void operateC() {
systemC.operateC();
}
}
SystemA.java
public interface SystemA {
void operateA();
}
SystemAImpl.java
public class SystemAImpl implements SystemA {
@Override
public void operateA() {
System.out.println("operateA");
}
}