zoukankan      html  css  js  c++  java
  • 简谈Ioc

    Ioc(控制反转)的概念已经提了很多年了,已经不是“时髦”的新名词,但对于刚入行的新程序员来说,可能还不太好理解,经常有新人抱怨,看了些资料,但对于Ioc的概念还是懵懵懂懂。这里主要谈一下我个人的见解。

    一、什么是Ioc

    Ioc全称为Inversion of Control,中文翻译为“控制反转”。Ioc是一种设计思想。

    下面我们谈一下控制反转中,“控制”指的是什么,“反转”又反转了什么。

    看一个例子:

    我们在武器接口(IWeapon)中定义一个射击方法,枪(Gun)实现这个接口完善射击方法,最后Person类持有一个武器,并据用攻击方法。

    这里我们看到Person类中持有一个抽象对象,而构造函数中赋值具体的Gun就构成了强耦合。如果我们要修改Person类持有的抽象内容,我们就要修改代码,这不符合设计模式中开放封闭的原则!

    这时,我们想把Person类对 IWeapon 类型对象创建的“控制”权限“反转”到一个“容器”或其他内容中,这就是“Ioc”。

    二、实现Ioc

     现在添加一个容器类,在类中维护一个类型映射,具体代码如下。

    我们再添加一个弓(Bow)类

    修改Main函数中代码:

    在程序的开始注册容器中类型映射,然后Person中的IWeapon创建就交给Ioc容器来注入。

  • 相关阅读:
    vue动态绑定class的几种方式
    寒假阅读笔记之《人月神话》
    人月神话阅读笔记1
    寒假阅读笔记之《构建之法》2
    寒假阅读笔记之《构建之法》
    家庭记账本APP(7)
    家庭记账本APP(6)
    家庭记账本APP(5)
    家庭记账本APP(4)
    家庭记账本APP(3)
  • 原文地址:https://www.cnblogs.com/ydp1991/p/7597659.html
Copyright © 2011-2022 走看看