码迷,mamicode.com
首页 > 其他好文 > 详细

简谈Ioc

时间:2017-09-27 17:39:28      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:模式   开始   翻译   log   修改   es2017   理解   logs   程序员   

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

一、什么是Ioc

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

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

看一个例子:

技术分享

技术分享

技术分享

 

技术分享

 

 

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

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

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

二、实现Ioc

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

技术分享

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

技术分享

修改Main函数中代码:

技术分享

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

简谈Ioc

标签:模式   开始   翻译   log   修改   es2017   理解   logs   程序员   

原文地址:http://www.cnblogs.com/ydp1991/p/7597659.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!