首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 互联网 >

为什么小弟我们需要IOC框架, 与依赖倒置原则有什么关系

2013-04-05 
为什么我们需要IOC框架, 与依赖倒置原则有什么关系?这种设计被称之为 Naive Design。 一旦业务层依赖的任何

为什么我们需要IOC框架, 与依赖倒置原则有什么关系?

这种设计被称之为 Naive Design。 一旦业务层依赖的任何一个模块发生变化,都会影响到业务层。变化通常是引入错误的原因。

那么我们以依赖倒置的原则来重新设计,得到下图中的结构:


为什么小弟我们需要IOC框架, 与依赖倒置原则有什么关系
?这样是不是业务层就非常独立了。
?但是,是不是有点晕了。这是怎么做到的呢? 来看一段简单的示例:


可以看到 Business 没有依赖任何工程,DataAccess依赖了Business,Client也就是OrderService的调用方,同时依赖了Business和DataAccess。

?

你可能已经注意到了,?IOrderRepository的接口定义在Business中,而在DataAccess中实现了这个接口。这样就实现了依赖倒置。这样做有什么好处呢,因为IOrderRepository接口的使用是Business提出来的,它只需要知道我要使用这个接口,而不用关心实现,这样就把实现的变化封装在了DataAccess中。这也体现了OO设计中最重要的两个原则:封装变化,面向接口编程。

?

在使用OrderService的地方,也就是client中,我们创建一个OrderRepository,并作为OrderService的参数传入。代码如下:

        static void Main(string[] args)        {            var orderRepository = new OrderRepository();            var orderService = new OrderService(orderRepository);        }

为什么不让OrderService自己创建OrderRepository呢?这样明显会导致双向依赖么。

?

每次创建OrderService的时候都要new一下OrderRepository,烦不烦。于是就有了IOC框架,帮我们自动创建一个OrderRepository,并注入OrderService。

?

回头再想想,如果你的项目是正向依赖关系。用IOC框架有意义么? 达到解耦的目的了么?

热点排行