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 关注
- 323 浏览
添加回答
举报
0/150
提交
取消