- 定义:为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用
public interface AModuleApi { public void testA(); } public class AModuleImpl implements AModuleApi { public void testA() { System.out.println("现在在A模块中 *** 作testA方法"); } } public interface BModuleApi { public void testB(); } public class BModuleImpl implements BModuleApi { public void testB() { System.out.println("现在在B模块中 *** 作testB方法"); } } public interface Facade { public void test(); public void a(); public void b(); } public class FacadeApi implements Facade { public void test() { AModuleApi a = new AModuleImpl(); a.testA(); BModuleApi b = new BModuleImpl(); B.testB(); } public void a() { AModuleApi a = new AModuleImpl(); a.testA(); } public void b() { BModuleApi b = new BModuleImpl(); B.testB(); } } public class Client { public static void main(String[] args) { new FacadeApi().test(); } }
- 外观模式的目的:
- 让外部减少与子系统内多个模块的交互,松散耦合,从而让外部能够更简单地使用子系统
- 屏蔽外部客户端和系统内部模块的交互,从而把AB模块组合成一个整体对外,方便客户端调用,封装了系统内部的细节功能
- 外观模式的方法实现中,一般是负责把客户端的请求转发给子系统内部的各个模块进行处理,Facade的方法本身不进行功能的处理,Facade方法实现只是实现一个功能的组合调用
- 优点
- 松散耦合
- 简单易用
- 更好的划分访问的层次
- 缺点
- 过多的或者是不合理的Facade也容易让人迷惑。到底是调用Facade好呢还是直接调用模块好
- 外观模式的本质:封装交互,简化调用
- 何时选用外观模式
- 希望为一个复杂子系统提供简单的接口时
- 想要让客户程序和抽象类的实现部分松散耦合
- 构建多层结构的系统
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)