为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

茅侃侃 2018-10-25 11:10:17
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中的策略模式。



查看完整回答
反对 回复 2018-10-31
?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

使用多态,

这样可以有不同数据库的数据访问层,

他们都继承接口,

可以使用反射技术来决定使用哪个数据访问层,

也就决定使用了,哪种数据库~~~


查看完整回答
反对 回复 2018-10-31
  • 2 回答
  • 0 关注
  • 323 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信