public class Order {...private static readonly PetShop.IBLLStrategy.IOrderStrategy orderInsertStrategy = LoadInsertStrategy();... private static PetShop.IBLLStrategy.IOrderStrategy LoadInsertStrategy() { // Look up which strategy to use from config file string path = ConfigurationManager.AppSettings["OrderStrategyAssembly"]; string className = ConfigurationManager.AppSettings["OrderStrategyClass"]; // Using the evidence given in the config file load the appropriate assembly and class return (PetShop.IBLLStrategy.IOrderStrategy)Assembly.Load(path).CreateInstance(className);}
2 回答

不負相思意
TA貢獻1777條經驗 獲得超10個贊
使用接口的意義就在于, 使用方(或者說客戶類)依賴于抽象而不是某個具體的類,這樣的代碼就會比較穩定,不會因為處理訂單的邏輯有變化,增加一個新的類了,就需要修改調用方的代碼。
舉個例子 ,假如使用的是某個具體類,那么客戶類(客戶類有可能是很多個,不止一個)的代碼是這樣子的:
private static readonly OrderStrategy orderStategy = LoadInsertStrategy();
這時,由于業務的需要,不得不增加了一個OrderStrategy2,那么涉及到這次修改的一部分客戶類,就需要修改代碼:
private static readonly OrderStrategy2 orderStategy = LoadInsertStrategy();
實際上,用接口的話,客戶類就不需要做修改了,因為可以動態地決定使用哪個策略類來實現需要的邏輯。
另外,這個也是GOF中的策略模式。
- 2 回答
- 0 關注
- 344 瀏覽
添加回答
舉報
0/150
提交
取消