外观模式
1.定义
为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
2.示例代码
/*A模块的接口*/ public interface AModuleApi{ public void testA(); } /*A模块的实现*/ public class AModuleImpl implements AModuleApi{ public void testA(){ System.out.println("现在A模块里操作testA方法"); } } /*B模块的接口*/ public interface BModuleApi{ public void testB(); } /*B模块的实现*/ public class BModuleImpl implements BModuleApi{ public void testB(){ System.out.println("现在B模块里操作testB方法"); } } /*C模块的接口*/ public interface CModuleApi{ public void testC(); } /*C模块的实现*/ public class CModuleImpl implements CModuleApi{ public void testC(){ System.out.println("现在C模块里操作testC方法"); } }
/*定义外观对象*/ public class Facade{ public void test(){ AModuleApi a = new AModuleImpl(); a.testA(); BModuleApi b = new BModuleImpl(); b.testB(); CModuleApi c = new CModuleImpl(); c.testC(); } }
/*客户端调用*/ public class Client{ public static void main(String args[]){ new Facade().test(); } }
3.实际应用
外观模式的目的不是给子系统添加新的功能接口,而是为了让外部减少与子系统内部多个模块的交互,松散耦合,从而让外部能够更简单的使用子系统。外观应该是包装已有的功能,它主要负责组合已有功能来实现客户需求,而不是添加新的实现。
外观模式的本质:封装交互,简化调用