淺談開發模式(一)--工廠模式

想寫這文章是爲我複習和加深自己對閱讀《大話設計模式》的理解。設計模式很多種,用法也各式各樣,但是總結起來無非就是通過這些模式讓你找到"封裝變化"、“對象間的鬆散耦合、”針對接口編程“的感覺,從而設計出易維護、易擴展、易複用、靈活性好的程序。---設計模式就是面向對象編程思維的體操。

                                                                                               簡單工廠模式

《大話設計模式》這本書中列舉了一個非常好的例子,就是以菜鳥的面試經歷引出代碼規範、面向對象編程、複用、封裝以及緊耦合和松耦合的概念。這個例子我覺得堪稱經典。一個簡單的計算器實現:

   在main方法中通過if判斷實現”+“、”-“、”*“、”/“的運算。最後在控制檯輸出結構。這麼能不能實現功能呢,那肯定的是能!因爲結果的正確的。可是大家都是java是面向對象的編程語言,我們爲什麼不加以利用呢。

 編寫程序的時候我們要考慮如下幾點:

  第一點:程序的可維護性

  第二點:代碼的可複用性

  第三點:程序的可擴展性

  第四點:代碼的靈活性好。

  在實際應用過程中通過封裝、繼承、多態把程序的耦合度降低通過設計模式是程序變得更加靈活、容易修改並且易於複用。

  通過上述內容書中的菜鳥就封裝了一個算法類(Operation)。裏面的寫法就是通過getResult的switch語句選擇性的執行各種算髮,然後返回結果。這種實現方式就是實現了業務和界面的分離。可是這種寫法業務之間結合的太緊密,說句難聽的就是你是公司新入職的同事,公司還沒對你有絕對的信任,但是公司還不得不把這所有的算法交給你來維護,這樣如果有壞心思的人也就可以對其他的業務算法做破壞,這是公司不願意看到的。所以我們爲了漲薪爲了升職也不得不從了公司。要把業務重新封裝,然後再把"+,"-,"*,"/".這個四個業務也進行封裝,然後繼承算法類(Operation)。上述的四個業務實現業務類(operation)的getResult方法。

  業務類(Operation),裏面有NumberA和NumberB兩個屬性一個抽象方法getResult()方法;

  業務子類:

       OperationAdd

       OperationSub

       OperationMul

       OperationDiv

     分別實現父類getResult()方法

  上面所述的已經算是實現了業務與界面的分離、業務與業務之間分離,這個時候我們工廠也要建立起來了(實現工廠模式):

  public class OperationFactory{

     public static Operation createOperation(String opera){

    Operation opera=null;

      switch(opera){
       case:"+"

        opera=new OperationAdd();

       break;

      case:"-"

         opera=new OperationSub()

      break;

      case:"*"

          opera=new OperationMul();

      break;

      case:"/"

          opera=new OperationDiv();

      break;

      }

   return opera;

  }

}

這個工廠代碼完成之後我們只需要輸入符號,工廠就會自動幫我們實例化對應的對象,然後通過對臺返回父類的方式實現了計算器的結果;

剩下的代碼就簡單了

Operation oper=Operation.createtiongFactory.createOperate("+");

oper.NumberA=1;

oper.NumberB=2;

 double result=oper.getResult();

這樣業務修改就非常簡單了,如果想讓同事修改加法邏輯,只要給他加法類就好了!

這樣一個簡單的工程模式就實現了!也是我看書的後的總結,大部分也是書裏的內容,希望可以對不理解的朋友有些幫助,我也加深下自己的印象。也希望通過這樣的方式使自己的能力有所提升!

 

 

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