抽象工廠模式

2021-06-20 18:34:55 字數 1511 閱讀 6612

為了方便引進抽象工廠模式,引進乙個新概念:產品族。產品族,是指同個工廠生產的不同產品等級結構的產品組成的家族。如圖:

圖中,一行共有三個不同的產品,它們屬於同乙個產品族,總共有三個產品族,同一列具有相同的產品等級結構;(也就是說同樣的顏色是同乙個產品族,同一形狀具有相同的產品等級結構)

抽象工廠模式是指乙個工廠可以建立出分屬於不同產品等級結構的乙個產品族中的所有物件。(具體的乙個工廠能建立出同種顏色的產品)

類結構圖為:

請回顧下工廠方法(在工廠方法模式章節中),會發現抽象工廠方法經常是以工廠方法的方式實現的,它們的不同在與抽象工廠定義了乙個負責建立一組產品的介面,介面內的每個方法都負責建立乙個具體產品。

簡單的寫下** 加深理解:

package abstractfactory;

public class test

}abstract class abstractfactory

class abstractfactory1 extends abstractfactory

@override

abstractproductb createproductb()

}class abstractfactory2 extends abstractfactory

@override

abstractproductb createproductb()

}inte***ce abstractproducta

inte***ce abstractproductb

class producta1 implements abstractproducta }

class producta2 implements abstractproducta }

class productb1 implements abstractproductb }

class productb2 implements abstractproductb }

class client

public void showproduct()

}

"

開放-封閉

"原則:

要求系統對擴充套件開放,對修改封閉。通過擴充套件達到增強其功能的目的。對於涉及到多個產品族與多個產品等級結構的系統,其功能增強包括兩方面:

增加產品族:

abstract factory

很好的支援了

"開放-封閉

"原則。

增加新產品的等級結構:需要修改所有的工廠角色,沒有很好支援

"開放-封閉

"原則。

綜合起來,抽象工廠模式以一種傾斜的方式支援增加新的產品,它為新產品族的增加提供方便,而不能為新的產品等級結構的增加提供這樣的方便

抽象工廠模式 抽象工廠模式

抽象工廠模式其實是圍繞了乙個超級工廠建立其他的工廠 可參考工廠模式 這個超級工廠又可以想像成是其他工廠的工廠,這種設計模式是一種建立型模式。在抽象工廠模式中,介面是負責建立乙個相關物件的工廠,不需要顯式指出其類。每個生成的工廠都能按照工廠模式提供物件。意圖提供乙個建立一系列相關或相互依賴物件的介面,...

工廠模式 抽象工廠模式

這裡使用簡單的話來講解工廠模式,不涉及程式設計 什麼是工廠模式呢?我的理解是對抽象介面例項的封裝。假如有乙個介面,有若干的實現類,代表不同的例項。傳統產生物件的方法是直接new乙個出來,對於每個例項都要new,當實現介面的類較多時會很麻煩,並且類的實現也暴露出來了。工廠模式是一種產生物件的模式,使用...

工廠模式 抽象工廠模式

子類父類代換 場景 在不同的條件下,需要建立不同的實現子類時。如網路通訊可以使用tcp udp。可以實現同乙個介面,通過工廠類根據條件 tcp或udp 來例項化不同的子類。這些子類符合黎克特制代換原則。public inte ce tlprotocol public class tcpimpleme...