美文网首页
生活中的 “依赖” 和 程序里的 “依赖”

生活中的 “依赖” 和 程序里的 “依赖”

作者: 程就人生 | 来源:发表于2023-01-08 09:40 被阅读0次

“依赖” 在百度百科里有两种释义:

1、依靠别人或事物而不能自立或自给。
2、各个事物或现象互为条件而不可分离。

在生活中,“依赖” 这个词我们也经常使用。小孩子在婴幼儿阶段,需要父母/养育者的照顾,小孩依赖父母/养育者。谈恋爱的时候,女方负责撒娇卖萌,男方负责跑腿、端茶、倒水做各种事情,女方依赖男方。结婚以后,女主内男主外,女方负责照顾家庭,男方负责赚钱养家,男女双方互相依赖。

依赖到底是什么意思呢?通过释义和例子,还是不够直白。换个例子看看。

我要喝开水,总不能对着水壶喝,首先要把热水倒入杯子,然后我才能端起杯子喝水。我使用杯子喝水。依赖,换个直白的词就是“使用”(use-a)。工具是被使用的,人也是被使用的,没毛病。

再看一个有关依赖的原则,依赖倒转原则。在上一篇文章中,我们使用领导和员工来比喻依赖倒转原则。在这里再使用孩子和养育者的例子,把依赖倒转原则再诠释一遍。

孩子在婴儿阶段,很多事情你都可以协助他完成。但随着他慢慢长大,比如到了三岁,四岁、五岁,甚至更大,你就不可以再把他当个婴儿了,要适当地放权了。比如吃饭、上厕所、穿鞋、穿衣服等等一些事情,需要他自己来完成,即使刚开始他做得再慢,你也得接受,而作为养育者的你只需要发号命令就可以了。而这时的孩子,就是具体的实现者,而养育者则是接口。

举个例子,吃饭时间到了,你对着客厅正在玩耍的他喊了一声,吃饭了。他听到你的招呼后,跑到饭桌前坐下,自己拿起碗筷吃饭,怎么把饭吃到嘴里则是他自己的事情。这就是依赖倒转原则。该放手就放手,孩子做一件事情的过程,就是一个人成长的过程,不可继续依赖,你也不能让他依赖一辈子。

最后再看下和依赖相关的依赖注入。

所谓依赖注入,个人认为就是依赖者和被依赖者的衔接方式。

Spring依赖注入主要有三种方式:

1.通过构造器注入,Spring官方推荐的方式;

/**
 * 定义一个人的类
 * @author 程就人生
 * @Date
 */
public class Person {
  
  // 喝水容器
  private IContainer container;
  
  /**
   * 1.构造器注入
   * @param container
   */
  public Person(IContainer container){
    this.setContainer(container);
  }
}

特点:
对象初始化完成后,就可获得可使用的对象;
可以检测到循环对象;
注入对象很多的情况下,构造参数列表会很长,不灵活。

2.通过setter方法注入;

/**
 * 定义一个人的类
 * @author 程就人生
 * @Date
 */
public class Person {
  
  // 喝水容器
  private IContainer container;
  /**
   * 2.通过setter方法注入
   * @param container
   */
  public void setContainer(IContainer container) {
    this.container = container;
  }
}

特点:
可以确保在注入前不依赖Spring容器;
每个set方法单独注入一个对象,灵活控制,可以选择性注入;
可以检测到循环对象。

3.通过filed属性注入,通过@Autowired 、 @Resource 注解;

/**
 * 定义一个人的类
 * @author 程就人生
 * @Date
 */
public class Person {
  /**
   * 3.通过field属性注入
   */
  @Autowired
  private IContainer container1;
  
}

特点:
对外部对象可见;
无法检测循环依赖;
如被final修饰无法赋值。
以上便是我的理解和整理,希望对你有帮助。

相关文章

  • 生活中的 “依赖” 和 程序里的 “依赖”

    “依赖” 在百度百科里有两种释义: 1、依靠别人或事物而不能自立或自给。2、各个事物或现象互为条件而不可分离。 在...

  • 耦合和解耦合

    程序的耦合 耦合:程序间的依赖关系包括:类之间的依赖方法间的依赖 解耦:降低程序间的依赖关系 实际开发中应该做到:...

  • 程序的耦合

    程序间的依赖关系:类之间的依赖,方法间的依赖 解耦:降低程序间的依赖关系 实际开发中尽量做到编译器不依赖,运行期才...

  • Spring

    1.程序的耦合 耦合:程序间的依赖 解耦:降低程序间的依赖关系 实际开发中应该做到:编译期不依赖,运行时才依赖 解...

  • 第三章 3.1DI的配置

    3.1 依赖和依赖注入 依赖注入带来的好处: 动态替换Bean依赖对象,程序更灵活:替换Bean依赖对象,无需修改...

  • Spring笔记

    1、程序的耦合:耦合:程序间的依赖关系包括:(1)类之间的依赖 (2)方法间的依赖2、解耦:降低程序间的依赖...

  • 生活中的路径依赖

    当然,这只是路径依赖的一个例子。 在我毕业后工作的一年内,渐渐体悟到,人生处处存在“路径依赖”。 比如最近,和我合...

  • 依赖查找和依赖注入

    依赖查找和依赖注入的区别 依赖查找:容器中的对象通过Api来查找自己所依赖的资源和对象 依赖注入:依赖对象和注入对...

  • DI 依赖注入

    Dependency Injection,依赖注入 生活案例:Usb接口 程序世界:DI思想:需求:服务层需要依赖...

  • php 之依赖注入和反射关系

    学习依赖注入和反射应该弄懂以下几个概念:依赖倒置原则:程序要依赖于抽象接口,不要依赖于具体实现。控制反转:遵循依赖...

网友评论

      本文标题:生活中的 “依赖” 和 程序里的 “依赖”

      本文链接:https://www.haomeiwen.com/subject/uiwecdtx.html