JAVA有23種設計模式
複合(composition)
新的class是由既有class的形式,並加入新程式碼
即在新的class中,宣告舊的class物件,並可以使用到舊class內的資料成員與方法
繼承(inheritance)
委任(delegation)
介於繼承與合成之間的關係,將成員物件置於所建立的class中(合成),但又將該成員物件的所有method都放到新的class(繼承)
單例設計:
保證物件唯一,提供給其他類別來訪問,所以由自己建立,提供物件來保證唯一
流程:
1.
私有建構子
2.
創建本類物件
3.
提供方法返回物件給對外訪問
Single類別一載入就創建物件
class Single(){
private
single(){} //私有建構子
private
static Single mSingle = new Single();
public
static Single getInstance(){
return mSingle;
}
}
物件延遲加載,在多執行緒下可能會發生問題
class SIngle{
private
Single(){}
private
static Single mSingle = null;
public
static Single getInstance(){
if(mSingle == null){
mSingle = new Single();
return
mSingle;
}
}
}
改良
class SIngle{
private
Single(){}
private
static Single mSingle = null;
public
static Single getInstance(){
if(mSingle
== null){
sychronized(Single.class){
if(mSingle == null){
mSingle = new Single();
return
mSingle;
}
}
}
}
}
裝飾設計模式:
當想要對已有的對象進行功能增強時可以定義類別,將已有的物件傳入,基於已有的功能,並提供加強功能,此自定義的類別稱為裝飾類別。裝飾類通常會通過建構子方法接收被裝飾的物件,以被裝飾的物件為基礎,提供更強功能
裝飾模式比繼承靈活,降低了類與類之間關係,因為其增強已有物件,其具備的功能和已有的是相同,只不過提供了更強的功能,所以裝飾類和被裝飾類通常是都屬於同一個體系中的。
沒有留言:
張貼留言