zoukankan      html  css  js  c++  java
  • 依赖注入

    依赖注入

    把有依赖关系的类放到容器中,解析出这些类的实例,就是依赖注入。目的是实现类的解耦。

    如果一个类A的功能实现需要借助于类B,那么就成类B是类A的依赖。

    如果在类A的内部去实例化类B,那么两者之间会出现比较高的耦合。一旦类B出现了问题,类A也需要进行改造。

    如果这样的情况较多,每个类之间都有依赖,那么就会出现牵一发而动全身的情况,程序会极难维护,并且很容易出现问题。

    要解决这个问题,就要把A类对B类的控制权抽离出来,交给第三方去做。把控制权反转给第三方,就称作控制反转(IOC Inversion Of Control).

    控制反转是一种思想,是能够解决问题的一种可能的结果,而依赖注入(Dependency Injection) 就是其最典型的实现方法。

    由第三方(我们称作IOC容器)来控制依赖,把他通过构造函数、属性或者工作模式等方法,注入到类A内。这样就极大程度的对类A和类B进行了解耦。

    http://c.biancheng.net/design_pattern/

    设计模式六大原则: 开闭原则

    软件对象(类、模块、方法等)应该对于扩展是开放的,对修改是关闭的

    迪米特法则(LOD):

      也叫最少知识原则。迪米特法则的定义是只与你的直接朋友交谈,不与"陌生人"说话。如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该应用。其目的是降低类之间的耦合度,提高模块的相对独立性。

    里氏替换原则:

      子类应当可以替换父类并出现在父类能够出现的地方。

    单一职责原则:

      对象不应承担太多功能,正如一心不能而用,比如太多的工作(种类)会使人崩溃。唯有专注才能保证对象的高内聚;唯有唯一,才能保证对象的细粒度。

  • 相关阅读:
    转载:常见浏览器兼容性问题与解决方案
    转载:gulp文件
    转载:TypeScript 简介与《TypeScript 中文入门教程》
    android mediacodec 在某些机子上无法编码的问题
    Android Camera setRecordingHint函数 在部分手机上的问题。
    raspberry pi 上使用 MQ-7一氧化碳传感器模块
    raspi # gstreamer
    raspberrypi 摄像头 rtsp服务器
    gst-rtsp-server 转发rtsp流
    编译 gstreamer的相关组件
  • 原文地址:https://www.cnblogs.com/developer-qin/p/13088393.html
Copyright © 2011-2022 走看看