JAVA備忘錄之設計模式(01):策略模式



     Java設計模式(01):策略模式


     特別聲明:

     *本文爲學習筆記

     *本文只是備忘錄,並非詳細講解。

 

      策略模式:封裝算法(變化、行爲),讓他們可以相互替換,算法的變化獨立於使用者(客戶)。

     

          將行爲封裝起來,利用組合和多態來實現行爲的複用。

          設計原則:

                     1、多用組合少用繼承。

                     2、面向接口而不是實現編程

          面向接口編程可以理解爲面向超類型編程。這裏的接口不僅是指java中的interface,而是一種概念,關鍵在於利用多態。

                     3、找出變化的部分,獨立出來,和不變化的部分區分開。

          優點:遵循面向對象設計原則,降低設計耦合、便於擴展。

          缺點:當實現算法較多時,會增加需要維護的類的數量。可以使用工廠方法來解決。


---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

        JAVA中很多地方都使用策略模式。

如排序Collections.sort()  調用不同Array.sort(). 使用的就是策略模式。線程池、正則等都有用到。

       現實的項目中如何使用?

       #目前電商系統中 自動獲取快遞單號。不同的快遞公司對應一種獲取單號的算法。

       一般結構如下:

        僞代碼如下:

if(SF){
  service= new SFService()
}
if(YD){

service= new YDService()


}
service.getMailNo();

        看到上面的代碼有沒有覺得不舒服? 如果有很多快遞公司,是否會有很多if else。是的,會有很多if else,會有很多類,正如上面的缺點所說。這種時候我們可以使用工廠模式來管理這些類。
       寫代碼的一個原則:任何的if else你都要小心,應爲會讓人難受。如果if else過多 你就要考慮使用模式來解決問題了。


       #以前做過的排隊算法。體檢引導排隊算法。

       #計算快遞價格的算法。


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