原創做品,能夠轉載,可是請標註出處地址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 }
其實直接調用也會獲得相同的結果,可是採用外觀模式能規範代碼,外觀類就是子系統對外的一個總接口,咱們要訪問子系統是,直接去子系統對應的外觀類進行訪問便可!
二、外觀模式應用場景
當咱們訪問的子系統擁有複雜額結構,內部調用繁雜,初接觸者根本無從下手時,不凡由資深者爲這個子系統設計一個外觀類來供訪問者使用,統一訪問路徑(集中到外觀類中),將繁雜的調用結合起來造成一個總調用寫到外觀類中,以後訪問者不用再繁雜的方法中尋找須要的方法進行調用,直接在外觀類中找對應的方法進行調用便可。
還有就是在系統與系統之間發生調用時,也能夠爲被調用子系統設計外觀類,這樣方便調用也,屏蔽了系統的複雜性。
同系列文章: