工廠類含有必要的判斷邏輯,可以決定在什麼時候使用哪種產品類的例項。
抽象產品類是所建立的所有物件的父類。
具體產品類是建立目標,繼承自抽象產品類。
#include "factory.h"
#include "concreteproducta"
#include "concreteproductb"
product* factory::createproduct(string proname)
else if('b' == proname)
}
工廠模式的優點在於,當需要什麼時,只需要傳入乙個正確的引數,就能獲取你所需要的物件,且無須知道建立細節,參見上面的
createproduct()
工廠類的工廠方法往往是靜態方法,可以通過類名直接呼叫。使用起來很方便。
簡單工廠模式將物件的建立和物件本身的業務處理分離,降低了系統和耦合度,使兩者修改起來都相對容易。
問題在於,工廠類職責過重,增加新的產品就需要修改相關邏輯,不符合軟體開發的開閉原則(對擴充套件開放,對修改封閉)。且工廠類一旦不能工作,對整個系統都有影響。
簡單工廠模式使用了靜態工廠方法,造成工廠角色無法形成基於繼承的等級結構。
靜態方法是該類的行為,與該類的物件無關
設計模式 工廠模式(簡單工廠)
一 簡單工廠 定義 簡單工廠模式 factory pattern 屬於類的創新型模式,又叫靜態工廠方法模式 static factorymethod pattern 是通過專門定義乙個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。特點 工廠類直接實現,乙個產品介面,乙個工廠類可以產生多...
設計模式(簡單工廠模式 工廠模式 抽象工廠模式)
當邏輯較為簡單時,可以直接建立對應的類。如下 include using namespace std class class banana class pear intmain 通過此 可以發現,使用者直接與客戶接觸,違背了dip 依賴倒轉 原則,過於麻煩,所以引出簡單工廠模式。include us...
設計模式 簡單工廠設計模式
請用任意一種物件導向語言實現計算器控制台程式,要求輸入兩個數和運算符號,得到結果。operation運算類 public class operation set public double numberb set public virtual double getresult 加減乘除類 using...