工廠方法(factorymethod)模式:定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。工廠方法使乙個類的例項化延遲到其子類中;
工廠類集中了所有產品建立邏輯的,如果不能正常工作的話會對系統造成很大的影響。如果我們增加乙個產品,我們就需要在工廠類中增加case分支條件,修改原有的類,這樣我們不但對擴充套件開放了,也對修改開放了,違背了「開放-封閉」原則,所以我們對簡單工廠模式進行優化,對工廠抽出乙個介面,就有了以下的工廠方法模式
(來自大話設計模式)
下面的類圖、**將均以資料庫操作為例項;
注:這裡例項僅做示例,不包含業務邏輯;
以新增、更新為例;
using繼承上述資料庫操作抽象類system;
using
system.collections.generic;
using
system.linq;
using
system.text;
using
system.threading.tasks;
namespace
factorymethod
}
usingview codesystem;
using
system.collections.generic;
using
system.linq;
using
system.text;
using
system.threading.tasks;
namespace
factorymethod
//////
更新
/// ///
public
override
bool
update()}}
繼承上述資料庫操作抽象類
usingview codesystem;
using
system.collections.generic;
using
system.linq;
using
system.text;
using
system.threading.tasks;
namespace
factorymethod
//////
更新
/// ///
public
override
bool
update()}}
using實現介面system;
using
system.collections.generic;
using
system.linq;
using
system.text;
using
system.threading.tasks;
namespace
factorymethod
}
using實現介面system;
using
system.collections.generic;
using
system.linq;
using
system.text;
using
system.threading.tasks;
namespace
factorymethod}}
usingoracle資料庫和sqlserver資料庫操作分別呼叫system;
using
system.collections.generic;
using
system.linq;
using
system.text;
using
system.threading.tasks;
namespace
factorymethod}}
當需要增加新產品的時候,需要增加新的產品類,還需要增加對應的工廠類
C 設計模式 3 工廠方法模式
工廠方法 factorymethod 模式 定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。工廠方法使乙個類的例項化延遲到其子類中 工廠類集中了所有產品建立邏輯的,如果不能正常工作的話會對系統造成很大的影響。如果我們增加乙個產品,我們就需要在工廠類中增加case分支條件,修改原有的類,這樣我們...
設計模式 3 工廠方法模式
1.意圖 定義乙個用於建立物件的的介面,讓子類決定例項化哪乙個類.2.適用性 當乙個類不知道它必須所建立的物件的類的時候。當乙個類希望由它的子類來指定它所建立的物件的時候。3.抽象工廠和工廠方法的區別 抽象工廠 模式依賴於 工廠方法 模式的。因此,抽象工廠強調的是前面的動詞 抽象 也就是說,你將工廠...
設計模式 3 工廠方法模式
定義 定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。工廠方法使得乙個類的例項化延遲到了其子類。抽象工廠介面,用於建立計算物件 public inte ce ifactory 抽象計算介面,表示用於實現的業務 public inte ce calculate 具體工廠類,實現抽象工廠介面,返回...