1:何為設計模式?
設計模式(Design pattern)是一套被反復使用、多數人知曉的、經過分類編目的、代碼設計經驗的總結可以被反復使用而且可靠性高。設計模式可以讓你的程序可維護性高,可擴展性好。
2:為什么要學習設計模式?
復用解決方案——通過服用已有的設計模式,為自己的問題找到了更高的起點,避免了繞彎路。不必再為普遍,重復的問題重新設計解決方案。
建立通用的術語——交流與協作都需要一個共同的詞匯基礎,一個對問題共同的觀點。設計模式在項目的分析和設計階段提供了一個通用的參考點。
更高層次的視角——這樣的視角將你從“過早處理細節”的“暴政”中解放出來。
模式本身就是對如何創建優良面向對象設計策略的實現:
1.針對接口編程
2.優先使用對象組合,而不是類繼承
3.發現并封裝變化點
abstract factory、adapter、strategy體現了針對接口編程,
composite、bridge體現了優先使用組合而不是繼承等。
深入到具體模式的討論,記錄一些需要注意的問題:
1.Adapter與Facade模式的區別
它們都是包裝器,但是兩者也有細微的區別:
.兩個模式中,我們都有已經存在的類(或者說系統)
.Facade模式中,我們無需針對接口編程;而Adapter模式我們必須針對接口編程
.Adapter模式通常是為了保持多態,而Facade模式對此不感興趣
.動機不同,Facade模式是為了簡化接口,而Adapter模式是針對一個現存的接口編程
結論:Facade模式簡化接口,而Adapter模式將接口轉換成另一個現有的接口
2.Bridge模式的理解
Bridge模式的意圖是將抽象部分與它的實現部分分離,使它們可以獨立的變化。這里的關鍵點是需要理解“實現部分”,如果把“實現部分”看成“對象外部、被對象使用的某種東西”,此模式就很好理解了。我們將變化轉移到一個使用或者擁有變化的對象(此對象是指抽象類的對象和用來實現抽象類的派生類的對象)。當出現繼承的類爆炸情況時,也許你該考慮此模式的應用場景了。
3.Strategy模式是一種定義算法家族的方法,所有的算法都做相同的工作,它們只是擁有不同的實現。當你的代碼中出現了很多switch或者if else的語句,你應該考慮此模式。Strategy模式帶來的缺點是類的數量的增加,在java中可以通過將實現類作為嵌套類放在Strategy抽象類中來解決。
4.singleton模式:
保證一個類有且僅有一個實例,并提供一個訪問它的全局訪問點
單線程應用:
第一種:靜態初始化
public class Singleton {
private Singleton() {
}
private static Singleton instance = new Singleton();
public static Singleton getInstance() {
return instance;
}
}
posted on 2008-06-11 19:46
天書 閱讀(166)
評論(0) 編輯 收藏 引用