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容器来注入。

  • 相关阅读:
    codeforces 980A Links and Pearls
    zoj 3640 Help Me Escape
    sgu 495 Kids and Prizes
    poj 3071 Football
    hdu 3853 LOOPS
    hdu 4035 Maze
    hdu 4405 Aeroplane chess
    poj 2096 Collecting Bugs
    scu 4444 Travel
    zoj 3870 Team Formation
  • 原文地址:https://www.cnblogs.com/ydp1991/p/7597659.html
Copyright © 2011-2022 走看看