new的問題
Road road = newRoad();
實現依賴,不能應對“具體實例化類型”的變化。
解決思路
封裝變化點!
如果沒有變化,不要額外的封裝
簡單工廠(靜態工廠)
封裝“對象創建”
面向接口編程 依賴接口,而非依賴實現
public classRoadFactory
{
public static Road CreateRoad()
{
return new Road();
}
}
//***********客戶程序**************//
Road road =RoadFactory.CreateRoad();
簡單工廠的問題
不能應對“不同系列對象”的變化。
動機(Motivation)
處理“一系列相互依賴的對象”的創建工作
由於需求變化,往往存在 更多系列對象的創建工作
提供一種“封裝機制”來避免客戶程序和這種“多系列具體對象創建工作”的緊耦合
意圖(Intent)
提供一個接口,讓該接口負責創建一系列“相關或者相互依賴的對象”,無需指定他們具體的類。