zoukankan      html  css  js  c++  java
  • 设计原则:我是如何使用“依赖注入”的

    依赖注入的定义

    控制反转(Inversion of Control,英文缩写为IoC)是一个重要的面向对象编程的法则来削减计算机程序的耦合问题。 控制反转还有一个名字叫做依赖注入(Dependency Injection)。简称DI。

    构造方法注入

    代码示例

    1 public class Service
    2 {
    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 DependService
    11     {
    12         set
    13         {
    14             _dependService = value;    
    15         }
    16     }
    17 }

    意图:拥有默认的依赖关系,运行时可以修改依赖对象。

    方法注入

    代码示例

    1 public class Service
    2 {
    3     public void Do(IDependService dependService)
    4     {
    5         //调用依赖
    6     }
    7 }

    意图:没办法采用上边两种注入的场景,如:需要从数据库持久化回来的领域模型;这种模式的依赖会向上传递(所有的注入方式都会)直到上层采用构造方法注入和属性注入。

    备注

    感谢IOC,没有IOC,真的很难爱上DI。

  • 相关阅读:
    洛谷P1421 小玉买文具
    洛谷P1035 级数求和
    洛谷 P2337 【[SCOI2012]喵星人的入侵】
    洛谷P1002 过河卒
    洛谷 P4073 [WC2013]平面图
    洛谷 P4705 玩游戏
    python3.7-初学篇-06
    python3.7-初学篇-04
    python3.7-初学篇-03
    python3.7-初学篇-02
  • 原文地址:https://www.cnblogs.com/happyframework/p/3019833.html
Copyright © 2011-2022 走看看