猿问

petshop 4.0 中 BLL项目 中 接口的使用

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);


}


茅侃侃
浏览 324回答 2
2回答

不负相思意

使用接口的意义就在于, 使用方(或者说客户类)依赖于抽象而不是某个具体的类,这样的代码就会比较稳定,不会因为处理订单的逻辑有变化,增加一个新的类了,就需要修改调用方的代码。举个例子 ,假如使用的是某个具体类,那么客户类(客户类有可能是很多个,不止一个)的代码是这样子的:private static readonly OrderStrategy orderStategy = LoadInsertStrategy();这时,由于业务的需要,不得不增加了一个OrderStrategy2,那么涉及到这次修改的一部分客户类,就需要修改代码:private static readonly OrderStrategy2 orderStategy = LoadInsertStrategy();实际上,用接口的话,客户类就不需要做修改了,因为可以动态地决定使用哪个策略类来实现需要的逻辑。另外,这个也是GOF中的策略模式。

凤凰求蛊

使用多态,这样可以有不同数据库的数据访问层,他们都继承接口,可以使用反射技术来决定使用哪个数据访问层,也就决定使用了,哪种数据库~~~
随时随地看视频慕课网APP
我要回答