zoukankan      html  css  js  c++  java
  • 依赖、耦合、解耦、控制反转(IOC)、依赖注入(DI)

    随着net的深入学习,出现了很多概念性的东西需要理解,现在统一记录一下。

    1.依赖:现阶段在任何一个有请求作用的系统,都会出现A类调用B类的情况,这时候A类就依赖于B类,A类和B类存在依赖关系。

    2.耦合、解耦:A类依赖于B类,这时对B类调用,一般通过A a=new B();的形式,不过这个时候如果B类重构(例如:增加了一个参数param1),要保证A类的正确使用,则必须重新new:A a=new B(param1); 则此时A类和B类就是耦合关系。不过带来了很多的不方便之处,如果B类频繁变动,则A类也必须同步修改,所以这时候想到了解耦(即解除这种关系,B类变动A类不用处理,交给其他类处理)。

    3.IOC(Inversion of Control 控制反转):有控制反转,应该也有控制 ‘正转’ 吧,可以用网上查到的一个形象例子说明:“我”充当一个入口类,在这个入口类中,我每次去吃饭都需要主动去买一双一次性筷子(每次使用都需要new一次),让筷子乖乖的到我手里来,是“我”控制了筷子。不过呢,在现实生活中,大部分人都是很懒的,我完全可以买一双精致的筷子放到容器中(IOC)中,每次要调用时,就向容器请求,容器通过“注入"的方式给我一双筷子,这个过程中,“我”就变为了请求方,而容器变为了控制方,控制关系发生了 反转。

    4.DI(Dependency Injection 依赖注入

    同样接着上边的例子,筷子来到我手里的过程(即A类请求容器调用B类的过程)就是依赖注入。

    注入大致分为 构造方法注入、接口或者抽象类注入 和 工厂方式注入。

    (1).构造方法注入

    public class B{

    。。。

    }

    public class A{

           B b;       

           public A(){

               b=new B();

            }

            b.newattr="xxx";

            。。。。

    }

    (2).接口或者抽象类注入

    public interface ICommon{

           void showMsg();

    }  

    public class B:ICommon

     {

            public void showMsg(){

                     console.log("我是b类的方法");

             }

     }

     public class A{

         ICommon icommon=new B();

        icommon.showMsg();

    }

    (3)工厂方式的注入和 (2)类似

    。。。

  • 相关阅读:
    linux下的进程管理
    linux 下的rpm包管理
    计算机基础之OSI模型 & TCP协议簇
    计算机网络基础-IP分类及划分子网实例
    docker容器可被其他主机访问设置
    redis连接问题
    redis五大类型常用命令-string|list|hash|set|zset-订阅-事务
    docker login & push失败问题记录
    linux下 python 和 pip 安装换源及虚拟环境管理详解
    linux 查看系统版本号
  • 原文地址:https://www.cnblogs.com/mili3/p/7610868.html
Copyright © 2011-2022 走看看