創建型模式有五種具體的模式,分別爲:
對比:
模式 | 定義 | 使用場景 |
---|---|---|
單例模式 | 確保某一個類只有一個實例,而且自行實例化並向整個系統提供這個實例 | 確保某各類有且只有一個對象的場景 |
原型模式 | 用原型實例指定創建對象的種類,並通過拷貝這些原型創建新的對象 | 1.類初始化需要消耗非常多的資源;2.通過new 產生一個對象需要非常繁瑣的數據準備或訪問權限;3.一個對象需要提供給其它對象訪問,而且各個調用者可能需要修改其值時。 |
建造模式 | 將一個複雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示 | 1.相同的方法,不同的執行順序,產生不同的時間結果時;2.多個部件或零件,都可以裝配到一個對象中,但是產生的運行結果又不相同時;3.產品類非常複雜,或者產品類中的調用順序不同產生了不同的作用時;4.初始化一個對象特別複雜時。 |
工廠方法模式 | 定義一個用於創建對象的接口,讓子類決定實例化哪個類 | 在任何需要生成複雜對象的地方,都可以使用工廠方法模式。複雜對象適合使用工廠模式,用new 就可以完成創建的對象無需使用工廠模式 |
抽象工廠模式 | 爲創建一組相關或者是相互依賴的對象提供一個接口,而不需要指定它們的具體類 | 一個對象族有相同的約束時可以使用抽象工廠模式 |
工廠方法與抽象工廠比較:
類圖比較:
工廠方法:
抽象工廠:
下面把工廠方法模式的類圖修改一下:
可以看到工廠方法只生產一個產品,而抽象工廠創建一組產品。