测试博客标题

本文介绍了一种软件设计模式——依赖倒置原则的应用实例。通过BuyController与IProductRepository接口的关系展示了如何实现控制反转,使得高层模块与底层模块通过抽象层进行解耦。文章还解释了如何通过IoC容器轻松替换底层实现,从而达到代码的高内聚低耦合,便于后续维护和扩展。

测试博客测试博客测试博客测试博客测试博客测试博客测试博客测试博客测试博客测试博客测试博客测试博客测试博客测试博客

3、总结

通过上面可以看到,BuyController(高层模块)中是引用一个IProductRepository抽象接口而不是具体的实现EFProductRepository(具体模块)类。这样做到依赖倒置,也就是控制反转。这里高层模块(BuyController)不依赖于底层模块(EFProductRepository里面的读取数据库操作的低层代码),二者都同依赖于抽象(IProductRepository);抽象不依赖于具体(EFProductRepository),具体依赖于抽象。
这里BuyController中的IProductRepository到底是哪个实现,是通过IocConfig类使用autofac的来注册绑定的。这样如果以后要更改数据库读取方式,考虑到性能问题,比如不用EF了框架了,要用Dapper,直接新建一个类DapperProductRepository继承IProductRepository接口,实现Products 属性。
最后把IocConfig中builder.RegisterType<EFProductRepository>().As<IProductRepository>(); 
改为
builder.RegisterType<DapperProductRepository >().As<IProductRepository>(); 

就可以了。这样BuyController高层的代码根本不用改,这样做到了对扩展开发,对修改关闭(OCP-面向对象的开放封闭原则),这个是面向对象程序设计的核心。很好的做到的松耦合,模块之间的耦合性大大降低,让软件扩展、维护更加容易。

 

转载于:https://www.cnblogs.com/weston/p/8880252.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值