工廠方法模式 應用

2021-10-03 09:48:57 字數 1753 閱讀 5331

工廠方法模式,又稱工廠模式,定義乙個建立產品物件的工廠介面,將產品物件的實際建立工作推到具體子工廠類當中。這滿足建立型模式中所要求的「建立與使用相分離」的特點。

將類的例項化(具體產品的建立)延遲到工廠類的子類(具體工廠)中完成,即由子類來決定應該例項化(建立)哪乙個類。

工廠方法模式的主要角色如下。

抽象工廠(abstract factory):提供了建立產品的介面,呼叫者通過它訪問具體工廠的工廠方法 newproduct() 來建立產品。

具體工廠(concretefactory):主要是實現抽象工廠中的抽象方法,完成具體產品的建立。

抽象產品(product):定義了產品的規範,描述了產品的主要特性和功能。

具體產品(concreteproduct):實現了抽象產品角色所定義的介面,由具體工廠來建立,它同具體工廠之間一一對應。

使用者只需要知道具體工廠的名稱就可得到所要的產品,無須知道產品的具體建立過程;

在系統增加新的產品時只需要新增具體產品類和對應的具體工廠類,無須對原工廠進行任何修改,滿足開閉原則;

其缺點是:每增加乙個產品就要增加乙個具體產品類和乙個對應的具體工廠類,這增加了系統的複雜度。

我們通過手機的生產過程來演示工廠方法模式。

/**

* 手機介面

*/public inte***ce phone

/** * 華為手機

*/public class huawei implements phone

}/**

* 蘋果手機

*/public class iphone implements phone

}/**

* 小公尺手機

*/public class xiaomi implements phone

}

/**

* phone 的抽象工廠類

* 提供了建立產品的介面,呼叫者通過它訪問具體工廠的工廠方法 producephone() 來建立手機產品。

*/public abstract class abstractphonefactory

/** * huawei 生產工廠

* 主要是實現抽象工廠中的抽象方法,完成具體產品的建立。

*/public class huaweifactory extends abstractphonefactory

}/**

* iphone 生產工廠

* 主要是實現抽象工廠中的抽象方法,完成具體產品的建立。

*/public class iphonefactory extends abstractphonefactory

}/**

* xiaomi 生產工廠

* 主要是實現抽象工廠中的抽象方法,完成具體產品的建立。

*/public class xiaomifactory extends abstractphonefactory

}

public class test 

}

華為撥打**

iphone撥打**

小公尺撥打**

可以看出效果其實和簡單工廠模式差不多,但是相比簡單工廠模式,工廠類(抽象工廠)不再負責例項的建立工作,而是交由工廠類的子類(具體工廠)來處理,同時如果新增新的手機型別,工廠模式不需要在原有的**上做修改,只需要新增相關的具體工廠和實體類就好,符合了開閉原則。

工廠方法模式 工廠方法模式

工廠方法模式是簡單工廠模式的公升級版,簡單工廠模式不符合設計模式的原則 即 單一職責,開閉原則 優點 職責明確,擴充套件方便 缺點 需要建立多個工廠 實現步驟 1.將工廠通用方法抽取介面 例如 ifactory 2.將產品抽取介面 例如 icar 3.實現各種產品 例如 baomacar,benti...

工廠方法模式 應用最廣

工廠方法模式 應用最廣 定義乙個用於建立物件的介面,讓子類決定例項化哪個類。在任何需要生成複雜物件的地方,都可以使用工廠方法模式。用new就可以完成的建立無需要使用工廠方法模式。工廠方法四大模組 抽象工廠角色具體工廠角色抽象產品角色具體產品角色。這個和下乙個模式抽象工廠方法模式裡是一樣的,都有四類角...

工廠方法模式 工廠方法模式 二

工廠方法模式是對簡單工廠的進一步抽象和封裝,需要新的類物件時不需要對既有工廠類進行修改,而是增加新的工廠類。工程類可以使用模版進一步封裝,由編譯器來生成 從而減少 編寫工作量。工廠方法的 c 實現01part產品抽象基類class animal virtual void show 0 02part產...