某些類的頻繁建立和銷毀,毫無意義浪費系統開銷。單例模式保證在jvm中只存在乙個例項。
優勢:通過getlnstance()獲得物件的引用1.減少new關鍵字的使用,降低系統開銷
2.避免對共享資源的多重占用
(1)餓漢式
沒有加鎖同步,執行效率高,但類載入時即初始化,不經過懶載入,浪費記憶體
public
class
hungrysingleton
public
static hungrysingleton getinstance()
}
(2)懶漢式(執行緒不安全)
實現懶載入,在呼叫getinstance()後例項化物件,但沒有加鎖,不支援多執行緒
public
class
lazysingleton
public
static lazysingleton getinstance()
return singleton;
}}
(3)懶漢式(執行緒安全)
加鎖解決多執行緒,但每次呼叫getinstance()時都會上鎖,降低效能
public
class
synclazysingleton
public
static
synchronized synclazysingleton getinstance()
return instance;
}}
(4)雙重校驗鎖
對 instance進行校驗,為空時加鎖,提高效能
public
class
synclazysingleton2
public
static synclazysingleton2 getinstance()
}}return instance;
}}
(5)靜態內部類
懶載入策略,執行緒安全
public
class
innersingleton
public
static innersingleton getinstance()
public object serialize()
}
(1)簡單工廠模式
建立乙個工廠類,對實現了統一介面的一些類進行例項的建立。
//抽象類
abstract
class
animal
//具體實現
class
catextends
animal
public
void
sound()
}class
dog extend animal
public
void
sound()
}//簡單工廠
class
factoryif(
"dog"
.equals
(type)
)return animal;}}
public
class
test
else
}}
JAVA常用設計模式總結
導言 設計模式常常被分為以下三類 建立型 建立物件時,不再由我們直接例項化物件 而是根據特定場景,由程式來確定建立物件的方式。如,工廠方法 抽象工廠模式 單例模式等。構造型用於幫助將多個物件組織成更大的結構。如,介面卡模式 橋接模式 組合器模式等。行為型用於幫助系統間物件的通訊,以及如何控制複雜系統...
設計模式學習筆記七 常用設計模式原則總結
前面學習了一部分建立型模式,發現了乙個比設計模式更重要的東西 設計模式原則。對於設計模式來說,為什麼這個模式要這樣解決這個問題,而另乙個模式要那樣,它們背後都遵循的就是永恆的設計原則。可以說,設計原則是設計模式的靈魂。三大基本物件導向設計原則 1.針對介面程式設計,而不是針對實現程式設計 2。優先使...
常用設計模式
mvc 模型 檢視 控制器 通過 委託其他物件做事情 或者充當某些功能的中間類 觀察者 在乙個物件或者值發生變化時,對它的觀察者發出通知 單例模式 應用程式執行的過程中只有乙個例項 工廠模式 為物件的建立提供統一的介面 簡單工廠模式,工廠方法模式,抽象工廠模式 裝飾模式 為類動態新增方法 一般用ca...