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

  • 相关阅读:
    iOSIPV6简单测试环境搭建
    SQL存儲過程的調試方法
    Excel的 OleDb 连接串的格式
    RequiredFieldValidator的使用
    GridView導出Excel
    咳嗽對症下藥
    WCF基礎
    WCF配置文件全攻略
    WCF寄宿方式
    WCF綁定
  • 原文地址:https://www.cnblogs.com/ydp1991/p/7597659.html
Copyright © 2011-2022 走看看