外观模式自我感觉很常见,用途也会很广泛
为子系统中的一组接口提供一个一致的界面,此模式定义了 一个高层接口 ,这个接口使得这一子系统更加容易使用。
首先定义四个子系统类
package facade; public class SubSystemOne { public void methodOne() { System.out.println("子系统方法一"); } }
package facade; public class SubSystemTwo { public void methodTwo() { System.out.println("子系统方法二"); } }
package facade; public class SubSystemThree { public void methodThree() { System.out.println("子系统方法三"); } }
package facade; public class SubSystemFour { public void methodFour() { System.out.println("子系统方法四"); } }
接着重点来了,定义外观类
package facade; public class Facade { SubSystemOne subSystemOne; SubSystemTwo subSystemTwo; SubSystemThree subSystemThree; SubSystemFour subSystemFour; public Facade() { // TODO Auto-generated constructor stub subSystemOne=new SubSystemOne(); subSystemTwo =new SubSystemTwo(); subSystemThree =new SubSystemThree(); subSystemFour =new SubSystemFour(); } public void MethodA() { System.out.println("method A "); subSystemOne.methodOne(); subSystemTwo.methodTwo(); } public void MethodB() { System.out.println("method B "); subSystemThree.methodThree(); subSystemFour.methodFour(); } }
最后建立实现类
package facade; public class Test { public static void main(String[] args) { // TODO Auto-generated method stub Facade facade =new Facade(); facade.MethodA(); facade.MethodB(); } }
书中此图我觉得非常好地解释了外观模式的用途以及用法
外观模式对代码重构具有很大的作用。它可以为一个复杂子系统提供一个简单接口,大大降低了耦合度。
初学《大话设计模式》