理解設計模式 抽象工廠模式

2021-09-12 07:15:26 字數 2342 閱讀 8137

一、簡單工廠模式

定義:專門定義乙個類用來負責建立其他類的例項,被建立的類通常具有共同的父類(沒有也行)

//產品類:

public

inte***ce

product

//繼承產品的子類a產品

public

class

producta

implements

product

}//繼承產品的子類b產品

public

class

productb

implements

product

}

對於產品例項的建立,我們可以建立乙個工廠來負責建立他們,需要什麼樣的產品傳入相應的產品引數

public

class

productfactory}}

public

enum producttype

//呼叫工廠為我們建立物件

public

class

tooluser

catch

(exception e)

}}

這種模式可以管理物件的建立,但是如果再生產一種產品c,需要改動工廠和列舉,耦合性比較大。

二、工廠方法模式

定義:建立乙個生產物件的介面,讓子類決定例項化哪乙個類。工廠方法使乙個類的例項化延遲到其子類.

為了解決上述耦合過強的問題,我們將工廠類變得抽象,在工廠方法模式中,核心的工廠類不再負責所有的產品的建立,而是將具體建立的工作交給子類去做,工廠自身只提供建立產品的介面。

//工廠的作用就是生產產品

public

inte***ce

factory

//a工廠負責生產a產品

public

class

productafactory

implements

factory

}//b工廠負責生產b產品

public

class

productbfactory

implements

factory

}public

class

main

}結果:

a產品的特點:好看!

b產品的特點:實用!

在上面的**中,如果需要生產產品c,我們只需要實現工廠介面,建立c工廠類即可,這遵循了開閉原則:

對擴充套件開放,對修改關閉

三、抽象工廠模式

定義:提供乙個建立一系列相關或者相互依賴物件的介面,而無需指定他們具體的類.當一系列物件變成一種,這時就是工廠模式,可以看出工廠模式是抽象工廠模式的特例。

工廠模式中,在工廠中生產產品,產品是需要人使用的,所以可以在工廠中不僅指定生產產品,還可以指定產品使用者,我們還可以指定產品品牌,產品發貨地等一系列特性。

//抽象工廠,用於指定生成產品和產品使用者

public

inte***ce

abstractfactory

//a產品工廠:生成a產品 使用者為a

public

class

productafactory

implements

abstractfactory

public person createperson()

}//b產品工廠:生成b產品 使用者為b

public

class

productbfactory

implements

abstractfactory

public person createperson()

}//使用者介面

public

inte***ce

person

//a使用者

public

class

persona

implements

person

}//b使用者

public

class

personb

implements

person

}

接下來開始加工生產:

public

class

main

}結果:

a產品的特點:好看!

使用者a

b產品的特點:實用!

使用者b

設計模式 工廠模式 抽象工廠模式

建立物件時不會對客戶暴露建立邏輯,並且通過使用乙個共同的介面來指向建立的物件。sept1 建立乙個公共介面,將要對外開放的方法在這裡定義。sept2 建立實現介面的類,用即實現對外開放的類的方法 sept3 建立工廠,提供乙個get方法,這個方法提供返回實現類的物件 建立選擇 sept4 使用,建立...

抽象工廠模式 常用設計模式 抽象工廠模式

提供乙個建立一系列相關或相互依賴物件的介面,而無需指定它們具體的類。在工廠方法模式中,我們的具體建立者每次使用都只能建立乙個同型別的物件,假如我們現在需要的是多個不同型別的物件,工廠方法就滿足不了需求了。這時我們可以把多個工廠方法組合到乙個類,這就是抽象工廠模式,它就是專門用來建立多個產品,也可以說...

抽象工廠模式 設計模式(九) 抽象工廠模式

提供乙個為建立一組相關或相互依賴物件的介面,且無須指定它們的具體類。它屬於建立型模式。在抽象工廠模式中,每個具體工廠都提供了多個用於建立多種不同型別具體物件的方法,這些不同型別的物件都存在乙個共同的屬性,構成乙個族。上篇文章設計模式 八 工廠方法模式說到工廠方法模式中只考慮某一類產品的生產,例如可樂...