讓乙個單獨的類專門實現乙個方法,根據傳入的型別引數建立不同型別的物件,並返回他們的抽象,這種建立物件的模式叫做工廠模式
工廠模式分為簡單工廠模式、工廠方法模式和抽象工廠模式
工廠模式將不同子類的例項化的過程封裝在單獨的類,讓子類只專注於實現,實現了功能解耦
簡單工廠模式由三部分組成:
父類介面:
public
inte***ce
iobject
子類a:
public
class
objecta
implements
iobject
}
子類b:
public
class
objectb
implements
iobject
}
子類c:
public
class
objectc
implements
iobject
}
工廠類:
public
class
objectfactory
elseif(
"objectb"
.equalsignorecase
(objecttype)
)elseif(
"objectc"
.equalsignorecase
(objecttype)
)else
}}
使用:
public
static
void
main
(string[
] args)
i'm a
i'm b
i'm c
對比簡單工廠模式,給每個子類建立乙個工廠類,在對應工廠類中進行子類的例項化
工廠方法模式自己只負責根據傳入引數選擇合適的工廠,將例項化過程提取出來交給每個工廠子類建立,將兩部分操作解耦,更便於維護,代價就是**量增多,可讀性變差
工廠方法模式由5部分組成:
父類介面:
public
inte***ce
iobject
子類a(篇幅太長會比較亂,b、c省略):
public
class
objecta
implements
iobject
}
工廠介面:
public
inte***ce
iobjectfactory
工廠子類a:
public
class
objectafactory
implements
iobjectfactory
}
工廠類:
public
class
objectfactory
elseif(
"objectb"
.equalsignorecase
(objecttype)
)elseif(
"objectc"
.equalsignorecase
(objecttype)
)else
return iobjectfactory.
createobject()
;}}
使用:
public
static
void
main
(string[
] args)
對比工廠方法模式,當子類需要繼續細化為不同型別時,將型別的區分抽象到工廠抽象類,通過繼承讓每個子類的工廠建立對應細化型別的類,實現排列組合的效果;而真正的工廠類會構建子類工廠,讓介面呼叫者自己選擇細化型別
抽象工廠模式由5部分組成:
細化型別的介面:
public
inte***ce
itypeoneobject
public
inte***ce
itypetwoobject
帶有細化型別的子類a(b相同):
public
class
typeoneobjecta
implements
itypeoneobject
}
抽象工廠類:
public
abstract
class
abstractobjectfactory
工廠子類:
public
class
objectafactory
extends
abstractobjectfactory
@override
public itypetwoobject createtypetwoobject()
}
工廠類:
public
class
objectfactory
elseif(
"objectb"
.equalsignorecase
(objecttype)
)else
return abstractobjectfactory;
}}
使用:
public
static
void
main
(string[
] args)
設計模式之工廠模式(建立型)
什麼是設計模式?每乙個模式描述了我們周圍不斷重 生的問題,以及該問題的解決方案的核心。這樣,你就能一次又一次地使用該方案而不必做重複勞動。1.簡單工廠 factory 當看到 new 時,就會想到 具體 pizza pizza new cheesepizza 當有很多種pizza時,我們需要用選擇語...
設計模式之建立型 工廠模式
工廠模式 實現了建立者和呼叫者的分離 分類 簡單工廠模式 用來生成同一等級結構中的任意產品 對於增加新的產品,需要修改已有的 工廠方法模式 用來生成同一等級結構中的固定產品 支援增加任意產品 抽象工廠模式 用來生成不同產品族的全部產品 對於增加新的產品,無能為力,支援增加產品族 物件導向設計的基本原...
設計模式 建立型之簡單工廠模式
簡單工廠模式又叫靜態工廠模式。首先,它並不屬於23種gof模式,23種gof中只有工廠模式和抽象工廠模式,但簡單工廠模式是工廠模式和抽象工廠模式的基礎,能更有助於我們理解後面兩者。簡單工廠模式的主要目的是通過不同引數獲取不同類的例項,它的主要實現原理是專門定義乙個工廠類,來建立其他類的例項,被建立的...