设计原则:我是如何使用“依赖注入”的
1 public class Service2 {3 private readonly IDependService _dependService;4 5 public Service(IDependService dependService)6 {7 _dependService = dependService;8 } 9 }
意图:非常强烈的依赖关系,缺少该依赖服务不能正常的履行期职责,运行时不能修改依赖对象(采用readonly声明)。
代码示例
1 public class Service 2 { 3 private IDependService _dependService; 4 5 public Service() 6 { 7 _dependService = new DefaultDependService(); 8 } 9 10 public IDependService DependService11 {12 set13 {14 _dependService = value; 15 }16 }17 }
意图:拥有默认的依赖关系,运行时可以修改依赖对象。
代码示例
1 public class Service2 {3 public void Do(IDependService dependService)4 {5 //调用依赖6 }7 }
意图:没办法采用上边两种注入的场景,如:需要从数据库持久化回来的领域模型;这种模式的依赖会向上传递(所有的注入方式都会)直到上层采用构造方法注入和属性注入。
感谢IOC,没有IOC,真的很难爱上DI。
?