看《墨攻》理解IoC概念(二)

巧巧电脑网络 2007-11-07  IT168 陈雄华   收藏此文 
大 中 小
分享到QQ空间人人网开心网豆瓣新浪微博腾讯微博更多0
上一页123下一页
ioc的三种类型从注入方法上看,主要可以划分为三种的注入类型,分别是构造函数注入、属性注入和接口注入,Spring支持构造函数注入和属性注入。下面我们继续使用以上的例子说明这三种注入方法的区别。 ■ 构造函数注入我们通过客户类的构造函数。

IoC的三种类型
从注入方法上看,主要可以划分为三种的注入类型,分别是构造函数注入、属性注入和接口注入,Spring支持构造函数注入和属性注入。下面我们继续使用以上的例子说明这三种注入方法的区别。

■ 构造函数注入
我们通过客户类的构造函数,将接口实现类通过接口变量传入,如代码清单 3 3所示:
代码清单 3 MoAttack:通过构造函数注入革离扮演者

public class MoAttack ...{private GeLi geli;public MoAttack(GeLi geli)...{ ① 注入革离的具体扮演者this.geli = geli;}public void cityGateAsk()...{geli.responseAsk(“墨者革离!”);} }

MoAttack的构造函数不关心具体是谁扮演革离这个角色,只要在①处传入的扮演者按剧本要求完成角色功能即可。
角色的具体扮演者由导演来安排,如代码清单 3 4所示:
代码清单 4 Director:通过构造函数注入革离扮演者

public class Director ...{public void direct()...{GeLi geli = new LiuDeHua(); ① 指定角色的扮演者MoAttack moAttack = new MoAttack(geli); ② 注入具体扮演者到剧本中moAttack.cityGateAsk();} }

在①处,导演安排刘德华饰演革离的角色,并在②处,将刘德华“注入”到墨攻的剧本中,然后开始“城门问答”剧段的演出工作。

■ 属性注入
有时,导演会发现,虽然革离是影片《墨攻》的第一主人公,但并非每场戏都需要革离的出现,通过构造函数方式注入显得很不妥当,在这种情况下,可以使用属性注入进行改造。属性注入通过setter方法完成客户类所需依赖的注入,更灵活,更方便。
代码清单 5 MoAttack:通过setter方法注入革离扮演者

public class MoAttack ...{private GeLi geli;public void setGeli(GeLi geli) ...{ ① 属性注入方法this.geli = geli;}public void cityGateAsk() ...{geli.responseAsk("墨者革离");} }

MoAttack在①处为geli属性提供一个setter方法,以便让导演在拍需要革离的戏时才将注入geli的具体扮演者,而不需要刘德华从头到尾跟着墨攻剧组跑。
代码清单 6 Director:通过setter方法注入革离扮演者

public class Director ...{public void direct()...{GeLi geli = new LiuDeHua();MoAttack moAttack = new MoAttack();moAttack.setGeli(geli); ① 调用属性setter方法注入moAttack.cityGateAsk();} }

和通过构造函数注入革离扮演者不同,在实例化MoAttack时,并未指定任何扮演者,而是在实例化MoAttack后,调用其setGeli()方法注入扮演者。按照类似的方式,我们还可以为剧本中其他如巷淹中,梁王等角色分别提供注入的setter方法,导演即可以根据所拍剧段的不同,注入所需要的角色了。

■ 接口注入
将客户类所有注入的方法抽取到一个接口中,客户类通过实现这一接口提供注入的方法。为了采取接口注入的方式,需要声明一个额外的接口:

public interface ActorArrangable ...{void injectGeli(GeLi geli); }

然后,MoAttack实现这个接口并实现接口中的方法:
代码清单 7 MoAttack:通过接口方法注入革离扮演者

public class MoAttack implements ActorArrangable ...{private GeLi geli;public void injectGeli (GeLi geli) ...{ ① 实现接口方法this.geli = geli;}public void cityGateAsk() ...{geli.responseAsk("墨者革离");} }

Director通过ActorArrangable的injectGeli()方法完成扮演者的注入工作。
代码清单 8 Director:通过接口方法注入革离扮演者

public class Director ...{public void direct()...{GeLi geli = new LiuDeHua();MoAttack moAttack = new MoAttack();moAttack. injectGeli (geli);moAttack.cityGateAsk();} }

由于通过接口注入需要额外声明一个接口,增加了类的数目,而且它的效果和属性注入并无本质区别,因此我们不提倡这种方式。

相关文章:2007年你需要知道的五大技术

但是来自Amazon和3tera公司的一些新服务也将按需计算的需求方式,带给了中小型企业,这个概念统称被称为托管型硬件或者网格计算。 其中这个过程中的关键因素之一就是虚拟化,其工作方式如下:遵循按需所取的原则,客户可以选择按每小时每虚拟服务器支付10美分的价格来访问虚拟服务器的衍生实例。

看《墨攻》理解IoC概念(二 )http://www.qqread.com/erp/3/j380307_3.html相关推荐

  1. 【转】 看《墨攻》理解IoC概念

    看<墨攻>理解IoC概念 作者:IT168 陈雄华 http://tech.it168.com/j/e/2006-12-27/200612271430763.shtml   概述    I ...

  2. 看《墨攻》理解IoC概念 转

    概述    IoC(反向控制:Inverse of Control)是Spring容器的底层核心功能,AOP功能.声明事务等功能在此基础上生根开花.但是IoC这个重要的概念却比较晦涩隐讳,拐弯抹角,不 ...

  3. 看《墨攻》理解IoC概念

    作者:IT168 陈雄华  http://tech.it168.com/j/e/2006-12-27/200612271430763.shtml

  4. C#墨攻IOC[转]

    原文叫看<墨攻>理解IOC概念 2006年多部贺岁大片以让人应接不暇的频率纷至沓来,其中张之亮的<墨攻>算是比较出彩的一部,讲述了战国时期墨家人革离帮助梁 国反抗赵国侵略的个人 ...

  5. 看《墨攻》理解软件世界的IoC概念

    转载自:http://tech.it168.com/j/e/2006-12-27/200612271430763.shtml 概述    IoC(反向控制:Inverse of Control)是Sp ...

  6. 看《墨攻》理解IoC

    IoC(反向控制:Inverse of Control)是Spring容器的底层核心功能,AOP功能.声明事务等功能在此基础上生根开花.但是IoC这个重要的概念却比较晦涩隐讳,拐弯抹角,不容易让人望文 ...

  7. 转看《墨攻》理解IoC—Spring底层核心

    概述 IoC(反向控制:Inverse of Control)是Spring容器的底层核心功能,AOP功能.声明事务等功能在此基础上生根开花.但是IoC这个重要的概念却比较晦涩隐讳,拐弯抹角,不容易让 ...

  8. 《墨攻》理解IoC—Spring底层核心

    概述 IoC(反向控制:Inverse of Control)是Spring容器的底层核心功能,AOP功能.声明事务等功能在此基础上生根开花.但是IoC这个重要的概念却比较晦涩隐讳,拐弯抹角,不容易让 ...

  9. Spring的使用——基础环境搭建以及IOC概念理解(持续更新)

    spring基础环境搭建 1.添加Spring依赖 2.编写一个Spring的配置文件 3.通过Spring的应用程序应用上下文获取对象 优点:在修改方案时可以不用修改代码,只需修改配置文件的bean ...

最新文章

  1. 自动刷新某个指定网页
  2. Prototype Pattern
  3. vivoNEX3s版本服务器无响应,vivo NEX 3S为什么突然无人问津,这几点原因道出真相...
  4. es中的ResourceWatcherService
  5. 【计算几何】多边形点集排序
  6. c# 文件流读写文件
  7. mvc的视图中显示DataTable的方法
  8. 004-JQuery属性
  9. 201521123057 《Java程序设计》第12周学习总结
  10. 物联网来了,智能城市离我们还有多远?
  11. win10绿联usb转串口_USB转串口DB9驱动安装与设置方法
  12. 易语言excel内容查找助手
  13. 西门子dcs系统组态手册下载_不懂PLC,SCADA,也能通俗易懂的了解DCS(分布式控制系统)...
  14. 没有技术说明文档的开源都是耍流氓:微软Roslyn编译即服务在CIIP中具体应用(上)...
  15. 超市收银软件测试自学,超市收银系统测试计划.doc
  16. Java基础--继承案例(二)
  17. mysql数据库环境的搭建
  18. 【MySQL】数据库机房架构与跨城容灾详解(实战篇)(MySQL专栏启动)
  19. WinWebMail破解步骤
  20. 电音风格之Future Bass【待续】

热门文章

  1. 播放量暴涨2000w+,单日狂揽24w粉,内卷的搞笑赛道还有机会
  2. qq截图功能自带图片转文字功能
  3. Self-Attentive 基于自注意力分类的非结构化日志异常检测
  4. verifiable secret sharing可验证的秘密共享
  5. SPSS学习系列之SPSS Modeler的功能特性(图文详解)
  6. 安装小米笔记本安装华为管家,实现手机在电脑多屏协同卡顿
  7. Rackspace云文件
  8. 漫画图解:垃圾分类背后的数据和真相
  9. Kaiming He 何恺明 http://kaiminghe.com/
  10. 准备好了吗?Windows Phone 8功能盘点