原創作品,可以轉載,但是請標注出處地址http://www.cnblogs.com/V1haoge/p/6484128.html
1、外觀模式簡介
外觀模式,一般用在子系統與訪問之間,用於對訪問屏蔽復雜的子系統調用,采用耳目一新的外觀類提供的簡單的調用方法,具體的實現由外觀類去子系統調用。
外觀模式任然是一種中間件類型的模式,使用外觀模式之后子系統的方法調用並非完全屏蔽,只是為訪問者提供了一種更佳的訪問方式,如果你不嫌麻煩,任然可以直接進行子系統方法調用。
甚至於在子系統與子系統之間進行調用時也可以通過各自的外觀類來進行調用,這樣代碼方便管理。
下面請看代碼實例:更能顯示這種情況
子系統方法1
1 public class SubMethod1 { 2 public void method1(){ 3 System.out.println("子系統中類1的方法1"); 4 } 5 }
子系統方法2
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 }
外觀類:
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 }
其實直接調用也會得到相同的結果,但是采用外觀模式能規范代碼,外觀類就是子系統對外的一個總接口,我們要訪問子系統是,直接去子系統對應的外觀類進行訪問即可!
2、外觀模式應用場景
當我們訪問的子系統擁有復雜額結構,內部調用繁雜,初接觸者根本無從下手時,不凡由資深者為這個子系統設計一個外觀類來供訪問者使用,統一訪問路徑(集中到外觀類中),將繁雜的調用結合起來形成一個總調用寫到外觀類中,之后訪問者不用再繁雜的方法中尋找需要的方法進行調用,直接在外觀類中找對應的方法進行調用即可。
還有就是在系統與系統之間發生調用時,也可以為被調用子系統設計外觀類,這樣方便調用也,屏蔽了系統的復雜性。
同系列文章:
- Java設計模式之《適配器模式》及應用場景
- Java設計模式之《外觀模式》及應用場景
- Java設計模式之《橋接模式》及應用場景
- Java設計模式之《單例模式》及應用場景
- Java設計模式之《觀察者模式》及應用場景
- Java設計模式之《調停者模式》及應用場景
- Java設計模式之《代理模式》及應用場景
- Java設計模式之《職責鏈模式》及應用場景
- Java設計模式之《享元模式》及應用場景
- Java設計模式之《構建者模式》及應用場景
- Java設計模式之《模板模式》及使用場景
- Java設計模式之《裝飾器模式》及應用場景
- Java設計模式之《工廠方法模式》及使用場景
- Java設計模式之《抽象工廠模式》及使用場景