讀之外觀模式


        外觀模式其實很好理解的,就是將表面的東西展示給人看,內部的東西你不知道的(因爲已經封裝好了),比如一個外部系統要和公司內部5個系統進行交互,而這5個系統之間也有交互,那麼第一種就是外部系統和5個系統都進行交互;第二種就是做一個接口將外部系統需要的邏輯封裝成一個方法,該方法中包含了關於5個系統的交互方式,這樣外部系統就不用直接和5個系統交互了,直接調用接口完事。外觀模式也叫門面模式,其實說白了就是把要用的東西封裝起來使交互更加方便。

       外觀模式定義:爲子系統中的一組接口提供一個一致的界面,此模式定義了一個高層接口,這個接口使得這一子系統更加容易使用。

       <<大話設計模式>>在這章節中以買股票爲故事情節展開的,說買股票需要學習很多知識,一個不懂股票的人買會喫虧,所以不如買基金,基金是有職業經理人去操作,用外觀模式來說的話,職業經理人就是門面,關於錢如何進行投資自己不關心,自己關心的是掙錢了沒有。

差不多理解了外觀模式了,小二,該上代碼了。

1、系統1和2,就是客戶端不關心與系統1、2交互

public class SubSystemOne {

 

   public void method(){

      System.out.println("這是系統1");

   }

}

public class SubSystemTwo {

 

   public void method(){

      System.out.println("這是系統2");

   }

}

2外觀類,將客戶端要交互的系統邏輯封裝

public class Facade {

 

   SubSystemOne one;

   SubSystemTwo two;

  

   public Facade(){

      one = new SubSystemOne();

      two = new SubSystemTwo();

   }

   //要處理的邏輯,將外部系統與onetwo系統交互的邏輯放這裏,外部系統就不用和onetwo交互了,直接與外觀類交互

   public void method(){

      one.method();

      two.method();

   }

}

3、客戶端

public class FacadeClient {

 

   /**

    * @param args

    */

   public static void main(String[] args) {

      // TODO Auto-generatedmethod stub

 

      //直接與外觀類交互,在此看不到onetwo系統

      Facade facade = new Facade();

      facade.method();

   }

 

}

        看到客戶端直接和門面類Façade交互就OK了,根本不知道系統1、2類的存在。這就是傳說中的外觀模式,沒用過不知道,學習了感覺也就那樣

附上模式結構圖


總結:對於複雜難以維護的老系統,直接去改或去擴展都可能產生很多的問題,那麼我們如果去開法一個Façade與老系統的交互,那麼以後直接開發新系統調用這個接口就可以了,這就是外觀模式,一個低調而又美麗的人……

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章