日期:2014-05-16  浏览次数:20448 次

IOC容器的理解探讨
本帖最后由 dpcrman1987 于 2014-03-31 16:15:01 编辑
公司里面的IOC容器是autofac,之前一直拿它来解决多态的问题,举个例子:

有个发送通知的功能(INotifySender),用户可以选择发送短消息(MessageSender:INotifySender)或者发送邮件(MailSender:INotifySender),用户选啥我就用autofac来动态创建实例然后执行操作,我的理解就是:用了autofac我就不用写工厂类了。

最近我同行交流的时候以及看开源项目的时候发现,他们对autofac的使用很简单更多的只是用来保持整站的一致性,这话有点抽象,我举个例子:

比如我这个站点可以调用A供应商的短信接口也可以调用B供应商的短信接口,或者我这个项目使用sql数据库或者使用mysql数据库,说简单点就是:autofac只是成了一个配置文件工具,不用来解决动态的问题

所以我就有点迷茫了,请问大家是怎么理解的?

------解决方案--------------------
容器这类东西是用来隔离设计滴,其实无所谓是配置文件还是动态组合

隔离出接口,预先埋入挂接点,需要的时候植入外挂代码,也就是他是和AOP思想对应的手段。所以我不在乎你是动态组合的,还是使用配置文件的,只要说你这个东西是需要呈面状分布(在垂直形态设计里不那么容易搞滴)都可以使用

至于是不是过度设计,我还是这个判定依据,本来能比较容易就在垂直形态设计的东西,就没必要遍地使用一些高级玩意。当我需要面状分布滴东西时候我才会使用外部组合方式