工廠方法說明:定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類,工廠方法使乙個類的例項化延遲到其子類。
先來乙份工廠方法模式的template,此template是與簡單工廠模式的例子一樣,實現計算器的運算功能( 在此可以先回顧下簡單工廠模式的例子):
//運算操作的父類,各種操作運算繼承此類public class operation
set
}public double numberb
set
}//獲取結果的虛方法,重寫
public virtual double getresult()
}
public class operationadd : operation //加法運算}public class operationsub : operation //減法運算
}public class operationmul : operation //乘法運算
}public class operationdiv : operation //除法運算
}
//具體加法工廠class addfactory : ifactory
}//具體減法工廠
class subfactory : ifactory
}//具體乘法工廠
class mulfactory : ifactory
}//具體除法工廠
class divfactory : ifactory
}
//客戶端**class mainprogram
}
第一篇設計模式介紹過簡單工廠模式的使用,在此說明下兩種模式的區別所在:簡單工廠模式的最大優點在於工廠類中包含了必要的邏輯判斷,根據客戶端的選擇條件動態例項化相關的類,對於客戶端來說,去除了與具體產品的依賴,例如設計的計算器程式中,只需要把運算符號(例如「+」)給工廠,工廠自動就給出了相應的例項。但是問題在於,如果新增一種運算(例如「求n次方」),這種運算在簡單工廠中不存在,那麼就要修改原有的工廠類,增加case分支條件,這不是好辦法,違背了開放-封閉原則。所以工廠方法的優點也就體現出來了——工廠方法模式實現時,客戶端需要決定例項化哪乙個工廠來實現運算類,選擇判斷的問題還是存在的,也就是說工廠方法把簡單工廠的內部邏輯判斷移到了客戶端**來進行,如果想要新增功能,現在只需要修改客戶端**即可。
設計模式 工廠方法模式
一 工廠方法 factory method 模式 工廠方法模式的意義是定義乙個建立產品物件的工廠介面,將實際建立工作推遲到工廠子類當中。核心工廠類不再負責產品的建立,這樣核心類成為乙個抽象工廠角色,僅負責具體工廠子類必須實現的介面,這樣進一步抽象化的好處是使得工廠方法模式可以使系統在不修改具體工廠角...
設計模式 工廠方法模式
1 factorymethod.h ifndef factorymethod h define factorymethod h include include using namespace std class osproduct 產品,product,產品的抽象類 class windowspro...
設計模式 工廠方法模式
框架的基礎知識 對框架的理解 框架和設計模式的關係 工廠方法模式 定義 定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類,factory method使乙個類的例項化延遲到其子類。結構 產品 public inte ce product 具體產品 public class productimpl...