我想了解使用像StructureMap IoC框架,但我不禁想到,这些“设计模式”只是无稽之谈,使代码只是更加复杂。
让我先从一个例子,我认为一个IoC有些有用的。
我想用控制器类中的MVC框架实例化时处理一个IoC可能有用。 在这种情况下,我想在.NET MVC框架。
通常情况下,控制器类的实例化是由框架处理。 因此,这意味着你不能真正传递任何参数到控制器类的构造函数。 这是IoC框架就可以派上用场。 某处在IoC容器你指定哪个类应该被实例化,并传递给你的控制器constructor
被调用控制器类时。
这也是得心应手,当你想进行单元测试控制器,因为你可以模拟传递给它的对象。
但就像我说的,我可有点明白人们为什么要使用它自己的控制器类。 但不应超出这一点。 从那里,你可以简单地做正常的依赖注入 。
但是,为什么不干脆像这样做:
public class SomeController
{
public SomeController() : this( new SomeObj() )
{
}
publiv SomeController(SomeObj obj)
{
this.obj = obj;
}
}
现在,你不必使用任何第三方IoC框架这也意味着较低的学习曲线。 既然你没有进入该框架藏汉的规格。
您还可以模拟对象的单元测试。 所以,无论是没问题的。
你唯一能说的就是,“但现在你的类是紧耦合 SomeObj
”。 这是真的。 但谁在乎!? 这是一个控制器类! 我不打算重用班级,永远。所以,为什么在地球上,我应该担心的是紧耦合..? 我可以模拟传递给它的对象。 这是唯一重要的事情。
所以我为什么要费心使用IOC? 我真的缺少点......? 对我来说,IoC模式只是一些被高估的格局。 添加更多的,复杂的层到应用程序...