設計模式(design pattern) 學習記錄

 

      做數值計算的,不瞭解軟件開發的模式,很遺憾。 

      有本書《 scientifc software desgin - object-orients way》,感覺寫的重點不突出。又拿到一本中文書:first head 設計模式。週末下午在starbucks 看,比較喜歡,但是經驗不多,不知道科學計算軟件設計裏面,到底怎麼用這些模式了。相信以後會慢慢深入的,第一篇,記錄。

      1 設計原則一: 找出應用中可能需要變化的地方,把它們獨立出來。

      2 設計原則二: 針對接口編程,而不是針對實現編程。 在類中包括設計行爲的方法。 

     多態: 針對抽象超類,運行時決定具體調用方法。舉例: duck類中加 2個實例變量,聲明爲接口類型; 在子類構造器中將接口變量實例化(new)

     3  設計原則三: 多用組合,少用繼承。動態設定行爲(行爲組合 vs 繼承)

      策略模式:

                    定義算法簇,分別封裝,相互可替換。算法變化獨立於算法使用者。

       notes:  庫,框架的實現就是硬件;設計模式就是軟件。

     觀察者模式:

                      定義對象之間一對多的依賴

                     當對象狀態改變,所有依賴者都收到同志並自動更新

                    實現: 主題接口 <------> 觀察者接口 :  兩者松耦合,只是接口相互通信,實體可自由改變。

    4 設計原則四: 爲交互對象之間的松耦合而設計

    裝飾者模式:

                       裝飾者,被裝飾者,組件具有相同的超類。通過裝飾者與組件組合,引入新行爲。

    5 設計原則五:    類應該對擴展開放,對修改關閉。 運行時擴展(組合) vs. 編譯時繼承

    工廠模式:

                    分裝創建(new)對象的代碼(工廠), 把具體實例化的過程從客戶代碼中剔除。

                    工廠方法將創建對象的行爲封裝在子類中,這樣客戶程序中關於超類的代碼和子類對象創建就解耦。

    6  設計原則六:  依賴抽象,不要依賴具體類。

    抽象工廠模式:

                      提供抽象接口,創建一組具體產品。

    單件模式:

                     確保一個類只有一個實例,並提供一個全局訪問點。

    note:  靜態方法 = 類方法; 靜態成員變量 =  類變量

               多線程優化 <---> 多實例化,  synchronized 關鍵詞,確保一個時間,只有一個線程訪問該方法

    命令模式:

                   方法調用封裝

                   將請求封裝成對象,以便使用不同的請求(來參數化其他對象)

   適配器模式:

                   對象適配器/類適配器

                   轉化插頭

   外觀模式:

                 減少對象之間的相互交互?

   封裝算法, 模版; 掛鉤的設計,就是爲算法可選部分提供掛靠方法;模版中抽象方法,子類中必須實現。

   好萊塢原則: 允許底層組件將自己掛鉤到系統上,但高層組件決定何時和怎樣使用這些底層組件

   迭代器和組合模式:

                          思想:封裝變化。

                          一個類應該只有一個引起變化的原因--保持每個類單一責任

    note: framework 保護一羣類,接口,集合,迭代器。

    事物的狀態 -> 改變事物的內部狀態來幫助對象控制自己的行爲。舉例: 定義狀態接口,爲每個狀態實現狀態類。將狀態的行爲放在一個類中,即將行爲局部化,同時由行爲接口實現。


                        

   

                  

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