知识大全 控制反转(Inversion of Control)介绍

Posted

篇首语:拍照的好处,是可以在人生微凉时,用回忆取暖。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 控制反转(Inversion of Control)介绍相关的知识,希望对你有一定的参考价值。

控制反转(Inversion of Control)介绍  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

   一 什么是IOC   IoC就是Inversion of Control 控制反转 在Java开发中 IoC意味着将你设计好的类交给系统去控制 而不是在你的类内部控制 这称为控制反转     下面我们以几个例子来说明什么是IoC     假设我们要设计一个Girl和一个Boy类 其中Girl有kiss方法 即Girl想要Kiss一个Boy 那么 我们的问题是 Girl如何能够认识这个Boy?   >  在我们中国 常见的MM与GG的认识方式有以下几种     1 青梅竹马 2 亲友介绍 3 父母包办     那么哪一种才是最好呢?     青梅竹马 Girl从小就知道自己的Boy    >  代码:   public class Girl    void kiss()     Boy boy = new Boy();           然而从开始就创建的Boy缺点就是无法在更换 并且要负责Boy的整个生命周期 如果我们的Girl想要换一个怎么办?(笔者严重不支持Girl经常更换Boy)     亲友介绍 由中间人负责提供Boy来见面   >  代码:   public class Girl   void kiss()     Boy boy = BoyFactory createBoy();             亲友介绍 固然是好 如果不满意 尽管另外换一个好了 但是 亲友BoyFactory经常是以Singleton的形式出现 不然就是 存在于Globals 无处不在 无处不能 实在是太繁琐了一点 不够灵活 我为什么一定要这个亲友掺和进来呢?为什么一定要付给她介绍费呢?万一最好的朋友爱上了我的男朋友呢?     父母包办 一切交给父母 自己不用费吹灰之力 只需要等著Kiss就好了    >  代码:   public class Girl   void kiss(Boy boy)     // kiss boy    boy kiss();           Well 这是对Girl最好的方法 只要想办法贿赂了Girl的父母 并把Boy交给他 那么我们就可以轻松的和Girl来Kiss了 看来几千年传统的父母之命还真是有用哦 至少Boy和Girl不用自己瞎忙乎了     这就是IOC 将对象的创建和获取提取到外部 由外部容器提供需要的组件     我们知道好莱坞原则 Do not call us we will call you 意思就是 You girlie do not call the boy We will feed you a boy     我们还应该知道依赖倒转原则即 Dependence Inversion Princinple DIP   >  Eric Gamma说 要面向抽象编程 面向接口编程是面向对象的核心     组件应该分为两部分 即     Service 所提供功能的声明     Implementation Service的实现     好处是 多实现可以任意切换 防止 everything depends on everything 问题.即具体依赖于具体     所以 我们的Boy应该是实现Kissable接口 这样一旦Girl不想kiss可恶的Boy的话 还可以kiss可爱的kitten和慈祥的grandmother    >   二 IOC的type   IoC的Type指的是Girl得到Boy的几种不同方式 我们逐一来说明     IOC type 不用IOC     代码:   public class Girl implements Servicable     private Kissable kissable;     public Girl()     kissable = new Boy();        public void kissYourKissable()     kissable kiss();             Girl自己建立自己的Boy 很难更换 很难共享给别人 只能单独使用 并负责完全的生命周期     IOC type 先看代码     代码:   public class Girl implements Servicable     Kissable kissable;     public void service(ServiceManager mgr)     kissable = (Kissable) mgr lookup( kissable );        public void kissYourKissable()     kissable kiss();             这种情况出现于Avalon Framework 一个组件实现了Servicable接口 就必须实现service方法 并传入一个ServiceManager 其中会含有需要的其它组件 只需要在service方法中初始化需要的Boy     另外 J EE中从Context取得对象也属于type     它依赖于配置文件     代码:       …     IOC type     代码:   public class Girl     private Kissable kissable;     public void setKissable(Kissable kissable)     this kissable = kissable;        public void kissYourKissable()     kissable kiss();             Type 出现于Spring Framework 是通过JavaBean的set方法来将需要的Boy传递给Girl 它必须依赖于配置文件     代码:     IOC type :     代码:   public class Girl     private Kissable kissable;     public Girl(Kissable kissable)     this kissable = kissable;        public void kissYourKissable()     kissable kiss();             这就是PicoContainer的组件 通过构造函数传递Boy给Girl   代码:     PicoContainer container = new DefaultPicoContainer();   container registerComponentImplementation(Boy class);   container registerComponentImplementation(Girl class);   Girl girl = (Girl) container getComponentInstance(Girl class);   girl kissYourKissable(); cha138/Article/program/Java/Javascript/201311/25429

相关参考

知识大全 控制反转思想的理解实例

  通过依赖注入来从不同的部门获取数据借助其来理解Spring的IOC  [java]  packagexliocdemo;  publicinterfaceDataManagement  //使用该

Z37钻床电力拖动特点以及控制要求?

  (1)由于摇臂钻床的相对运动部件较多,固采用多台电动机拖动,以简化传动装置主轴电动机M2承担钻削及进给任务,只要求单向旋转。主轴的正反转一般通过正反转摩擦离合器来实现。主轴转速及进刀量用变速机构调

Z37钻床电力拖动特点以及控制要求?

  (1)由于摇臂钻床的相对运动部件较多,固采用多台电动机拖动,以简化传动装置主轴电动机M2承担钻削及进给任务,只要求单向旋转。主轴的正反转一般通过正反转摩擦离合器来实现。主轴转速及进刀量用变速机构调

知识大全 but of 是什么意思

butof是什么意思?butof不是什么固定搭配是根据前半句出来的用法如:Lifeisn’tamatterofmilestones,butofmoments...but依然表示转折的意思,of前面省略

知识大全 "To make a child love book from the very beginning is of great help."中的"of"可以省略吗?

"Tomakeachildlovebookfromtheverybeginningisofgreathelp."中的"of"可以省略吗?  以下文字资料是由(全榜网网www.lis

知识大全 Index of Oracle

IndexofOracle  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  索引(Index)是常

知识大全 in lack of的用法

inlackof的用法inlackof[释义]缺乏用法这里的lack是抽象名词,因此,inlackof这个短语成立,比如:Amaninlackofself-confidenceseizesnochan

《One Of Them Girls》歌词全文及译文

《OneOfThemGirls》由AshleyGorley/BenJohnson/DallasDavidson/LeeBrice作词作曲,LeeBrice演唱,LeeBrice生于1980年,南卡罗来

知识大全 责任链模式(Chain of Responsibility)

责任链模式(ChainofResponsibility)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 days of the week是什么意思

daysoftheweek是什么意思daysoftheweek一周中的几天双语例句DaysOfTheWeek一个星期的七天Daysoftheweek是什么意思Daysoftheweek网络星期;一周七