創(chuàng)建型設(shè)計(jì)模式
單例模式
工廠模式
工廠方法模式
工廠方法模式定義了一個(gè)創(chuàng)建對(duì)象的接口,讓子類決定實(shí)例化哪個(gè)類。工廠方法使一個(gè)類的實(shí)例化延遲到其子類。
說(shuō)明
- 抽象產(chǎn)品類(
AbstractProduct
):定義了產(chǎn)品的抽象方法use()
,具體產(chǎn)品類需要實(shí)現(xiàn)該方法。 - 具體產(chǎn)品類(
ConcreteProductA
、ConcreteProductB
):實(shí)現(xiàn)了抽象產(chǎn)品類的use()
方法,代表具體的產(chǎn)品。 - 抽象工廠類(
AbstractFactory
):定義了創(chuàng)建產(chǎn)品的抽象方法createProduct()
,具體工廠類需要實(shí)現(xiàn)該方法。 - 具體工廠類(
ConcreteFactoryA
、ConcreteFactoryB
):實(shí)現(xiàn)了抽象工廠類的createProduct()
方法,負(fù)責(zé)創(chuàng)建具體的產(chǎn)品。 - 客戶端類(
Client
):通過(guò)抽象工廠和抽象產(chǎn)品編程,不直接依賴具體的工廠和產(chǎn)品。
抽象工廠模式
抽象工廠模式提供一個(gè)創(chuàng)建一系列相關(guān)或相互依賴對(duì)象的接口,而無(wú)需指定它們具體的類。
說(shuō)明
- 抽象產(chǎn)品族(
AbstractProductA
、AbstractProductB
):分別定義了產(chǎn)品族 A 和產(chǎn)品族 B 的抽象方法,具體產(chǎn)品類需要實(shí)現(xiàn)這些方法。 - 具體產(chǎn)品類(
ConcreteProductA1
、ConcreteProductA2
、ConcreteProductB1
、ConcreteProductB2
):實(shí)現(xiàn)了對(duì)應(yīng)抽象產(chǎn)品族的抽象方法,代表具體的產(chǎn)品。 - 抽象工廠類(
AbstractFactory
):定義了創(chuàng)建產(chǎn)品族 A 和產(chǎn)品族 B 的抽象方法,具體工廠類需要實(shí)現(xiàn)這些方法。 - 具體工廠類(
ConcreteFactory1
、ConcreteFactory2
):實(shí)現(xiàn)了抽象工廠類的方法,負(fù)責(zé)創(chuàng)建一組相關(guān)的具體產(chǎn)品。 - 客戶端類(
Client
):通過(guò)抽象工廠和抽象產(chǎn)品編程,不直接依賴具體的工廠和產(chǎn)品。
原型模式
原型模式是一種創(chuàng)建型設(shè)計(jì)模式,它允許通過(guò)復(fù)制現(xiàn)有對(duì)象來(lái)創(chuàng)建新對(duì)象,而無(wú)需知道對(duì)象的具體創(chuàng)建過(guò)程。
說(shuō)明
- 抽象原型類(
Prototype
):定義了一個(gè)克隆方法clone()
,所有具體原型類都需要實(shí)現(xiàn)該方法。 - 具體原型類(
ConcretePrototype
):實(shí)現(xiàn)了Prototype
接口的clone()
方法,負(fù)責(zé)復(fù)制自身。它包含一個(gè)字段field
以及相應(yīng)的構(gòu)造方法和獲取字段的方法。 - 客戶端類(
Client
):通過(guò)調(diào)用原型對(duì)象的clone()
方法來(lái)創(chuàng)建新對(duì)象,依賴于抽象原型類和具體原型類。
建造者模式
建造者模式是一種創(chuàng)建型設(shè)計(jì)模式,它將一個(gè)復(fù)雜對(duì)象的構(gòu)建與表示分離,使得同樣的構(gòu)建過(guò)程可以創(chuàng)建不同的表示。
說(shuō)明
- 產(chǎn)品類(
Product
):表示要構(gòu)建的復(fù)雜對(duì)象,包含多個(gè)部分(partA
、partB
、partC
),提供了設(shè)置這些部分的方法和展示產(chǎn)品信息的方法。 - 抽象建造者類(
Builder
):定義了構(gòu)建產(chǎn)品各個(gè)部分的抽象方法(buildPartA()
、buildPartB()
、buildPartC()
)以及獲取最終產(chǎn)品的方法getResult()
。 - 具體建造者類(
ConcreteBuilder
):實(shí)現(xiàn)了抽象建造者類的方法,負(fù)責(zé)具體的構(gòu)建過(guò)程,并持有一個(gè)產(chǎn)品對(duì)象。 - 指揮者類(
Director
):負(fù)責(zé)指揮建造過(guò)程,調(diào)用建造者的方法來(lái)構(gòu)建產(chǎn)品,依賴于抽象建造者類。 - 客戶端類(
Client
):創(chuàng)建指揮者和具體建造者對(duì)象,并調(diào)用指揮者的construct()
方法來(lái)構(gòu)建產(chǎn)品,依賴于指揮者類和抽象建造者類。
Java設(shè)計(jì)模式 文章被收錄于專欄
設(shè)計(jì)模式是軟件開發(fā)中針對(duì)反復(fù)出現(xiàn)的問(wèn)題所總結(jié)歸納出的通用解決方案,它可以幫助開發(fā)者更高效地構(gòu)建軟件系統(tǒng),提升代碼的可維護(hù)性、可擴(kuò)展性和可復(fù)用性。