先來說說設計模式的分類,主要分為以下大類:
建立乙個工廠類,對實現了同一介面的一些類進行例項的建立。
舉例如下:(我們舉乙個傳送郵件和簡訊的例子)
//建立二者的共同介面:
public
inte***ce
sender
//建立實現類:
public
class
mailsender
implements
sender
}public
class
smssender
implements
sender
}//建工廠類:
public
class
sendfactory
elseif(
"sms"
.equals
(type)
)else}}
//測試:
public
class
factorytest
} 輸出:this is sms sender!
是對普通工廠方法模式的改進,在普通工廠方法模式中,如果傳遞的字串出錯,則不能正確建立物件,而多個工廠方法模式是提供多個工廠方法,分別建立物件。
將上面的**做下修改,改動下sendfactory類就行,如下:
class
sendfactory
public sender producesms()
}//測試:
public
class
factorytest
} 輸出:this is mailsender!
將上面的多個工廠方法模式裡的方法置為靜態的,不需要建立例項,直接呼叫即可。
public
class
sendfactory
public
static sender producesms()
}public
class
factorytest
} 輸出:this is mailsender!
總體來說,工廠模式適合:凡是出現了大量的產品需要建立,並且具有共同的介面時,可以通過工廠方法模式進行建立。在以上的三種模式中,第一種如果傳入的字串有誤,不能正確建立物件,第三種相對於第二種,不需要例項化工廠類,所以,大多數情況下,我們會選用第三種——靜態工廠方法模式。
工廠方法模式有乙個問題就是,類的建立依賴工廠類,也就是說,如果想要拓展程式,必須對工廠類進行修改,這違背了閉包原則,所以,從設計角度考慮,有一定的問題,如何解決?就用到抽象工廠模式,建立多個工廠類,這樣一旦需要增加新的功能,直接增加新的工廠類就可以了,不需要修改之前的**。
public
inte***ce
sender
兩個實現類:
public
class
mailsender
implements
sender
}public
class
smssender
implements
sender
}public
inte***ce
provider
兩個工廠類:
public
class
sendmailfactory
implements
provider
}public
class
sendsmsfactory
implements
provider
}//測試:
public
class
test
}
其實這個模式的好處就是,如果你現在想增加乙個功能:發及時資訊,則只需做乙個實現類,實現sender介面,同時做乙個工廠類,實現provider介面,就ok了,無需去改動現成的**。這樣做,拓展性較好! 設計模式詳解 工廠模式(三)
本篇文章介紹一種設計模式 工廠模式。工廠模式是用來封裝物件的建立,減少應用程式和具體類之間的依賴,促進松耦合。根據工廠模式的應用特性,一共分為三種子模式 簡單工廠模式,工廠方法模式和抽象工廠模式。本篇文章主要介紹抽象工廠模式。本篇文章內容參考抽象工廠模式,原 從頭學習設計模式 四 抽象工廠模式。1....
Java設計模式之工廠模式詳解
在網上也看了很多關於工場模式的文章,但都沒說出重點,為什麼要採用工場模式,有的說為了避免修改方便,有的為了初始化方便。通過該文章得知 在這種情況下,可有工廠模式。也就是客戶端只需關注介面便可以建立物件,不用再關心其具體實現。抽象工廠模式 參考鏈結 避免修改工廠,在工廠模式基礎上再增加乙個介面prov...
設計模式詳解(二) 抽象工廠模式
前面介紹了簡單工廠模式和工廠方法模式。但是這兩種模式對應的工廠結構過於單一 乙個工廠只能生產一種產品 不適應與一些複雜的工廠等級結構,強行使用會導致工廠類的職責過於繁重,違反單一職責原則。因此我們推出抽象工廠模式。a b工廠分別生產聯想和戴爾品牌的筆記本,其元件包括主機板 螢幕 cpu 電源等,為了...