原创做品,能够转载,可是请标注出处地址http://www.cnblogs.com/V1haoge/p/6484128.htmlhtml
一、外观模式简介设计模式
外观模式,通常用在子系统与访问之间,用于对访问屏蔽复杂的子系统调用,采用耳目一新的外观类提供的简单的调用方法,具体的实现由外观类去子系统调用。测试
外观模式任然是一种中间件类型的模式,使用外观模式以后子系统的方法调用并不是彻底屏蔽,只是为访问者提供了一种更佳的访问方式,若是你不嫌麻烦,任然能够直接进行子系统方法调用。spa
甚至于在子系统与子系统之间进行调用时也能够经过各自的外观类来进行调用,这样代码方便管理。设计
下面请看代码实例:更能显示这种状况代理
子系统方法1code
1 public class SubMethod1 { 2 public void method1(){ 3 System.out.println("子系统中类1的方法1"); 4 } 5 }
子系统方法2htm
1 public class SubMethod2 { 2 public void method2(){ 3 System.out.println("子系统中类2方法2"); 4 } 5 }
子系统方法3中间件
1 public class SubMethod3 { 2 public void method3(){ 3 System.out.println("子系统类3方法3"); 4 } 5 }
外观类:blog
1 public class Facader { 2 private SubMethod1 sm1 = new SubMethod1(); 3 private SubMethod2 sm2 = new SubMethod2(); 4 private SubMethod3 sm3 = new SubMethod3(); 5 public void facMethod1(){ 6 sm1.method1(); 7 sm2.method2(); 8 } 9 public void facMethod2(){ 10 sm2.method2(); 11 sm3.method3(); 12 sm1.method1(); 13 } 14 }
测试类:
1 public class Clienter { 2 3 public static void main(String[] args) { 4 Facader face = new Facader(); 5 face.facMethod1(); 6 // face.facMethod2(); 7 } 8 9 }
其实直接调用也会获得相同的结果,可是采用外观模式能规范代码,外观类就是子系统对外的一个总接口,咱们要访问子系统是,直接去子系统对应的外观类进行访问便可!
二、外观模式应用场景
当咱们访问的子系统拥有复杂额结构,内部调用繁杂,初接触者根本无从下手时,不凡由资深者为这个子系统设计一个外观类来供访问者使用,统一访问路径(集中到外观类中),将繁杂的调用结合起来造成一个总调用写到外观类中,以后访问者不用再繁杂的方法中寻找须要的方法进行调用,直接在外观类中找对应的方法进行调用便可。
还有就是在系统与系统之间发生调用时,也能够为被调用子系统设计外观类,这样方便调用也,屏蔽了系统的复杂性。
同系列文章: