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

2021-09-26 04:43:00 字數 2859 閱讀 8902

工廠方法模式定義了乙個建立物件的介面,但由子類決定要例項化的類是哪乙個。工廠方法讓類把例項化推遲到子類。

抽象工廠模式提供乙個介面,用於建立相關或依賴物件的家族,而不需要明確指定具體類。

從pizzastore的角度,來理解上面的這個類圖:

抽象工廠的任務是,定義乙個建立一組產品的介面。這個介面內的每個方法都負責建立一組產品。同時,我們利用實現抽象工廠的子類來提供這些具體的做法。

我們來看乙個例子

/**

* @author zerlindali create at 2019/8/15 15:15

* @version 1.0.0

* @description pizzaingredientfactory

* 開始先為工廠定義乙個介面,這個介面負責建立所有的原料

*/public inte***ce pizzaingredientfactory

/**

* @author zerlindali create at 2019/8/15 15:30

* @version 1.0.0

* @description nypizzaingredientfactory

* 這是紐約原料工廠的實現。這工廠專精於大蒜番茄醬料、reggiano乾酪、新鮮哈利···

* 具體原料工廠必須實現pizzaingredientfactory這個介面,紐約原料工廠也不例外

*/public class nypizzaingredientfactory implements pizzaingredientfactory

@override

public sauce createsauce()

@override

public cheese createcheese()

@override

public veggies createveggies() ;

return veggies;

}@override

public pepperoni createpepperoni()

@override

public clams createclam()

}

/**

* @author zerlindali create at 2019/8/12 16:49

* @version 1.0.0

* @description 抽象pizzastore 建立者類

* 這是抽象建立者類,它定義了乙個抽象的工廠方法,讓子類實現此方法製造產品

* 建立者通常會包含依賴於抽象產品的**,而這些抽象產品由子類製造。建立者不需要真的知道在製造哪種具體產品。

*/public abstract class pizzastore

// 現在把工廠物件移到這個方法中,現在是抽象的

abstract pizza createpizza(string type);

}

/**

* @author zerlindali create at 2019/8/13 16:04

* @version 1.0.0

* @description nypizzastore 能夠產生產品的類成為具體建立者

*/public class nypizzastore extends pizzastore else if (item.equals("veggie")) else if (item.equals("clam")) else if (item.equals("pepperoni"))

return pizza;}}

/**

* @author zerlindali create at 2019/8/13 15:00

* @version 1.0.0

* @description pizza 工廠生產產品。對pizzastore來說,產品就是pizza.

*/public abstract class pizza

void cut()

void box()

public string getname()

public void setname(string name)

public string tostring()

}

public class clampizza extends pizza 

@override

void prepare()

}

public class veggiepizza extends pizza 

@override

void prepare()

}

下面請看原材料

public inte***ce dough
public class thincrustdough implements dough
public inte***ce sauce
public class marinarasauce implements sauce

設計模式 簡單工廠 工廠方法 抽象工廠方法模式

簡介 工廠方法模式分為 簡單工廠模式 工廠方法模式 抽象工廠方法模式 簡單工廠模式是屬於建立型模式,又叫做靜態工廠方法 static factory method 模式,但不屬於23種gof設計模式之一。簡單工廠模式是由乙個工廠物件決定建立出哪一種產品類的實 uml圖示例 public class ...

簡單工廠方法,工廠方法,抽象工廠方法

以大話設計模式計算器為例 簡單工廠方法是由具體執行功能類,工廠類,客戶端構成,工廠類有case語句,負責建立不同的類,客戶端呼叫工廠類裡面的工廠方法,工廠類的工廠方法根據客戶端傳進去的引數new相應的類的物件返回給客戶端,客戶端得到返回的物件用該物件初始化該物件的成員變數最後呼叫該物件的方法執行計算...

設計模式 工廠模式(工廠方法 抽象工廠)

1 工廠方法模式 factory method 定義乙個用於建立物件的介面,讓子類決定例項化哪個類。工廠方法使乙個類的例項化延遲到其子類。正如建立交通工具,可以通過不同的工廠方法建立所需的物件。類圖 對比 1 工廠方法在產品維度,即類圖中movable方向拓展比較方便,只需增加對應的類及相應的工廠方...