编程思想—依赖注入(DI)并非实现控制反转(IOC)的最佳方法

以构造函数注入为例:

public class TestClass(IClassA a,IClassB b, IClassC C,IClassD d)
{
  public void Method1()
 {
    //b c d 参数并未使用到,但却通过反射方式创建实例。
    a.Method1("Hello");
    console.WriteLine("Hello Word!");
 }
 ....
}

假如我仅需要执行Method1()方法,我必须创建TestClass实例,那必须通过反射方式创建构造函数参数,其实这里我们已经执行了额外的我们并没有真正使用的对象。

那么既要保持讲对象的创建权限分离,又不产生额外的性能开销。我们可以怎么做到?

 

我认为的最佳方法:创建IOC统一调用接口

public interface IBaseUnityServiceCall<T>
{
   T GetService();
   T GetSingletonService();
}

所有的接口都通过统一接口创建接口实例。不同模块现实接口方式可能有所不同。例如:1.创建接口实例后可能需要对实例进行权限赋Token或者用户名密码等 2.调用实例日志记录 3.自动释放实例(如果需要)

统一调用接口的优势在于:能够更加清晰的控制接口的依赖关系,并且创建接口实例后可根据不同接口模块统一执行相关逻辑操作。

  

posted @ 2016-06-14 08:50  L_yunwen  阅读(265)  评论(0编辑  收藏  举报