java設計模式之抽象工廠方法

2021-09-02 14:56:45 字數 1762 閱讀 2695

抽象工廠模式相對與工廠方法模式來說,每個具體工廠可以生產一族產品(即多種產品);而工廠模式方法是具體工廠生產相應的具體產品,只能生產一種產品。

當產品族中只有一種產品的時候抽象工廠模式退化成工廠方法模式

為建立一組相關或相互依賴的物件提供乙個介面,而且無需指定他們的具體類

區別在於產品,如果產品單一,最適合使用工廠模式,但是如果有多個業務品種、業務分類時,通過抽象工廠模式生產需要的物件是一種非常好的解決方式。

再通俗深化理解下:工廠模式針對的是乙個產品等級結構,抽象工廠模式針對的是面向多個產品等級結構的。

接下來,我們通過例子來了解下:

//抽象工廠:abstractfactory介面

//抽象工廠,定義了生產族產品的方法;

inte***ce abstractfactory

//抽象產品:producta介面

抽象產品b定義了產品的公共方法,產品a和b屬於乙個產品族

inte***ce producta

抽象產品b定義了產品的公共方法,產品a和b屬於乙個產品族

inte***ce productb

//具體產品(等級為1的a產品):concreteproducta1類

class concreateproducta1 implements producta

@override

public void method2()

}

//具體產品(等級為2的a產品):concreteproducta2類

class concreateproducta2 implements producta

@override

public void method2()

}

//具體產品(等級為1的b產品):concreteproductb1類

class concreateproductb1 implements productb

@override

public void method2()

}

//具體產品(等級為2的b產品):concreteproductb2類

class concreateproductb2 implements productb

@override

public void method2()

}

//具體工廠(生產等級為1的族產品):concretefactory1類

//concreatefactory1是用來生產等級為1的產品a,b;

class concreatefactory1 implements abstractfactory

@override

public productb factoryb()

}//具體工廠(生產等級為2的族產品):concretefactory2類

class concretefactory2 implements abstractfactory

@override

public productb factoryb()

}

public class abstractfactorydemo 

}

抽象工廠:如果產品單一則適合使用的是簡單工廠,但是當產品比較多的時候,則使用的是抽象工廠,生產產品族,這是先定義乙個介面,這個介面中定義的是生產每個產品的類,所以我們也得定義生產產品的抽象類,定義一些公共方法。然後可以定義具體產品,這個類實現所對應的產品抽象類。然後定義具體的工廠用於生產具體的產品。這個類實現工廠介面

java設計模式 工廠方法模式 抽象工廠模式

工廠方法模式 定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。工廠方法使乙個類的例項化延遲到其子類。角色 product 抽象產品,負責定義產品的共性,實現對事物抽象的定義 creator 抽象建立類,也就是抽象工廠,具體如何建立產品類是由具體的實現工廠完成 concretecreator 具...

設計模式之抽象工廠方法

如果看了前兩篇文章,這個設計模式一樣很簡單,上 抽象工廠方法 在工廠方法的基礎上,每個工廠例項裡不止乙個介面方法,而是多個 這樣做體現了產品簇的意義,將相關的產品放在同乙個工廠裡 public class main public inte ce icat public inte ce idog pu...

Java 之工廠方法和抽象工廠模式

1.概念 工廠方法 一抽象產品類派生出多個具體產品類 一抽象工廠類派生出多個具體工廠類 每個具體工廠類只能建立乙個具體產品類的例項。即定義乙個建立物件的介面 即抽象工廠類 讓其子類 具體工廠類 決定例項化哪乙個類 具體產品類 一對一 的關係。抽象工廠 多個抽象產品類,派生出多個具體產品類 乙個抽象工...