工廠三兄弟之抽象工廠模式(三)

2021-08-31 18:20:19 字數 1524 閱讀 8398

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!

抽象工廠模式為建立一組物件提供了一種解決方案。與工廠方法模式相比,抽象工廠模式中的具體工廠不只是建立一種產品,它負責建立一族產品。抽象工廠模式定義如下:

抽象工廠模式(abstract factory pattern):提供乙個建立一系列相關或相互依賴物件的介面,而無須指定它們具體的類。抽象工廠模式又稱為kit模式,它是一種物件建立型模式。

在抽象工廠模式中,每乙個具體工廠都提供了多個工廠方法用於產生多種不同型別的產品,這些產品構成了乙個產品族,抽象工廠模式結構如圖5所示:

圖5  抽象工廠模式結構圖

在抽象工廠模式結構圖中包含如下幾個角色:

● abstractfactory(抽象工廠):它宣告了一組用於建立一族產品的方法,每乙個方法對應一種產品。

● concretefactory(具體工廠):它實現了在抽象工廠中宣告的建立產品的方法,生成一組具體產品,這些產品構成了乙個產品族,每乙個產品都位於某個產品等級結構中。

● abstractproduct(抽象產品):它為每種產品宣告介面,在抽象產品中宣告了產品所具有的業務方法。

● concreteproduct(具體產品):它定義具體工廠生產的具體產品物件,實現抽象產品介面中宣告的業務方法。

在抽象工廠中宣告了多個工廠方法,用於建立不同型別的產品,抽象工廠可以是介面,也可以是抽象類或者具體類,其典型**如下所示:

abstract

class

abstractfactory

具體工廠實現了抽象工廠,每乙個具體的工廠方法可以返回乙個特定的產品物件,而同乙個具體工廠所建立的產品物件構成了乙個產品族。對於每乙個具體工廠類,其典型**如下所示:

class

concretefactory1

extends

abstractfactory

//工廠方法二

public abstractproductb createproductb

()……}

與工廠方法模式一樣,抽象工廠模式也可為每一種產品提供一組過載的工廠方法,以不同的方式對產品物件進行建立。

思考

抽象工廠模式是否符合「開閉原則」?【從增加新的產品等級結構和增加新的產品族兩方面進行思考。】

給我老師的人工智慧教程打call!

工廠三兄弟之抽象工廠模式(二)

在工廠方法模式中具體工廠負責生產具體的產品,每乙個具體工廠對應一種具體產品,工廠方法具有唯一性,一般情況下,乙個具體工廠中只有乙個或者一組過載的工廠方法。但是有時候我們希望乙個工廠可以提供多個產品物件,而不是單一的產品物件,如乙個電器工廠,它可以生產電視機 電冰箱 空調等多種電器,而不是只生產某一種...

工廠三兄弟之抽象工廠模式(二)

在工廠方法模式中具體工廠負責生產具體的產品,每乙個具體工廠對應一種具體產品,工廠方法具有唯一性,一般情況下,乙個具體工廠中只有乙個或者一組過載的工廠方法。但是有時候我們希望乙個工廠可以提供多個產品物件,而不是單一的產品物件,如乙個電器工廠,它可以生產電視機 電冰箱 空調等多種電器,而不是只生產某一種...

工廠三兄弟之簡單工廠模式(三)

為了將chart類的職責分離,同時將chart物件的建立和使用分離,sunny軟體公司開發人員決定使用簡單工廠模式對圖表庫進行重構,重構後的結構如圖2所示 在圖2中,chart介面充當抽象產品類,其子類histogramchart piechart和linechart充當具體產品類,chartfac...