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);
}
这是想问什么?
使用接口的意义就在于, 使用方(或者说客户类)依赖于抽象而不是某个具体的类,这样的代码就会比较稳定,不会因为处理订单的逻辑有变化,增加一个新的类了,就需要修改调用方的代码。
举个例子 ,假如使用的是某个具体类,那么客户类(客户类有可能是很多个,不止一个)的代码是这样子的:
private static readonly OrderStrategy orderStategy = LoadInsertStrategy();
这时,由于业务的需要,不得不增加了一个OrderStrategy2,那么涉及到这次修改的一部分客户类,就需要修改代码:
private static readonly OrderStrategy2 orderStategy = LoadInsertStrategy();
实际上,用接口的话,客户类就不需要做修改了,因为可以动态地决定使用哪个策略类来实现需要的逻辑。
另外,这个也是GOF中的策略模式。
说了一堆,不知道你想问的是这个吗?
问题是什么?什么是接口?
这不会是分享吧?
使用多态,
这样可以有不同数据库的数据访问层,
他们都继承接口,
可以使用反射技术来决定使用哪个数据访问层,
也就决定使用了,哪种数据库~~~
反射!面向接口变成中经常用到东西,返回一个接口实现类的对象。