设计模式的意义在于:面向业务内容、业务数据结构和系统架构,高内聚低耦合、优雅的将平面逻辑立体化。
1 package designPattern; 2 /** 3 * 外观模式 4 * @author Administrator 5 */ 6 public class B13_FacadeTest { 7 8 /** 9 * 为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 10 * 适用于: 11 * 1.当你要为一个复杂子系统提供一个简单接口时。子系统往往因为不断演化而变得越来越 12 * 复杂。大多数模式使用时都会产生更多更小的类。这使得子系统更具可重用性,也更容 13 * 易对子系统进行定制,但这也给那些不需要定制子系统的用户带来一些使用上的困难。 14 * Facade可以提供一个简单的缺省视图,这一视图对大多数用户来说已经足够,而那些需 15 * 要更多的可定制性的用户可以越过facade层。 16 * 2.客户程序与抽象类的实现部分之间存在着很大的依赖性。引入facade将这个子系统与客 17 * 户以及其他的子系统分离,可以提高子系统的独立性和可移植性 18 * 3.当你需要构建一个层次结构的子系统时,使用facade模式定义子系统中每层的入口点。 19 * 如果子系统之间是相互依赖的,你可以让它们仅通过facade进行通讯,从而简化了它们 20 * 之间的依赖关系 21 */ 22 public static void main(String[] args) { 23 Facade f=new Facade(); 24 f.methodA(); 25 } 26 } 27 //1.Facade 知道哪些子系统类负责处理请求。将客户的请求代理给适当的子系统对象。 28 class Facade 29 { 30 ServiceA sa; 31 ServiceB sb; 32 ServiceC sc; 33 public Facade() { 34 this.sa = new ServiceAImpl(); 35 this.sb = new ServiceBImpl(); 36 this.sc = new ServiceCImpl(); 37 } 38 public void methodA() 39 { 40 sa.method(); 41 sb.method(); 42 } 43 public void methodB() 44 { 45 sb.method(); 46 sc.method(); 47 } 48 public void methodC() 49 { 50 sa.method(); 51 sc.method(); 52 } 53 } 54 //2.Subsystemclasses 55 //实现子系统的功能。处理由Facade对象指派的任务。没有facade的任何相关信息;即没有指向facade的指针。 56 class ServiceAImpl implements ServiceA 57 { 58 public void method() 59 { 60 System.out.println("这是服务A..."); 61 } 62 } 63 class ServiceBImpl implements ServiceB 64 { 65 public void method() 66 { 67 System.out.println("这是服务B..."); 68 } 69 } 70 class ServiceCImpl implements ServiceC 71 { 72 public void method() 73 { 74 System.out.println("这是服务C..."); 75 } 76 } 77 //3.SYSTEM interface 78 interface ServiceA 79 { 80 void method(); 81 } 82 interface ServiceB 83 { 84 void method(); 85 } 86 interface ServiceC 87 { 88 void method(); 89 }
环境:JDK1.6,MAVEN,tomcat,eclipse
源码地址:http://files.cnblogs.com/files/xiluhua/designPattern.rar
欢迎亲们评论指教。