DANCE WITH JAVA

          開發(fā)出高質(zhì)量的系統(tǒng)

          常用鏈接

          統(tǒng)計(jì)

          積分與排名

          好友之家

          最新評(píng)論

          控制反轉(zhuǎn)的資料的集合及簡(jiǎn)單的概念對(duì)比

          控制反轉(zhuǎn):
          控制反轉(zhuǎn)的資料的集合
          參考一、
          標(biāo)題:向依賴關(guān)系宣戰(zhàn)----依賴倒置、控制反轉(zhuǎn)和依賴注入辨析
          url:http://www.contextfree.net/wangyw/source/dip_ioc.html
          說(shuō)明:詳細(xì)分析了幾個(gè)概念的不同
          參考二、
          Spring guide
          參考三、
          WebWork In Action IOC一章
          參考四、
          Martin fowler的文章
          http://www.aygfsteel.com/Files/dreamstone/DependencyInjection.rar
          強(qiáng)烈建議大家看一下第一篇文章和第四篇,作者寫的真的很好

          對(duì)比依賴倒置,控制反轉(zhuǎn),依賴注入?
          ---------------------------------------------
          1,依賴倒置:
          先說(shuō)明什么是"正置"
          正置就是,當(dāng)你設(shè)計(jì)一些類庫(kù)的時(shí)候,考慮到用戶的需要定義一些接口,用戶的應(yīng)用程序依賴這些接口

          對(duì)比"正置"和"倒置"
          正置:應(yīng)用依賴接口,接口由類庫(kù)設(shè)計(jì)者定義
          優(yōu)點(diǎn):類庫(kù)實(shí)現(xiàn)上自由度大,實(shí)現(xiàn)容易。
          缺點(diǎn):類庫(kù)設(shè)計(jì)復(fù)雜,要預(yù)測(cè)應(yīng)用的需求,同時(shí)有可能不符合應(yīng)用的需求

          倒置:應(yīng)用定義接口,類庫(kù)設(shè)計(jì)者實(shí)現(xiàn)接口,按照接口實(shí)現(xiàn)類庫(kù)
          優(yōu)點(diǎn):類庫(kù)設(shè)計(jì)不再需要預(yù)測(cè),肯定符合應(yīng)用需求
          缺點(diǎn):類庫(kù)有可能難以實(shí)現(xiàn)

          簡(jiǎn)單來(lái)說(shuō),正置和倒置的區(qū)別在于,誰(shuí)來(lái)制定標(biāo)準(zhǔn)。現(xiàn)實(shí)中因?yàn)樾枨蟮亩x是客戶決定的,所以倒置更
          適合程序的設(shè)計(jì)。從需求出發(fā),到底層實(shí)現(xiàn)。

          使用目的:便于應(yīng)用按照需求設(shè)計(jì)
          關(guān)注點(diǎn):接口的設(shè)計(jì)
          ---------------------------------------------
          2,控制反轉(zhuǎn):
          正常的控制:
           沒有一定的控制流程,下一個(gè)流程由上一個(gè)流程決定,實(shí)現(xiàn)應(yīng)用需要自己控制流程
          控制反轉(zhuǎn)  :
           抽象出固定的流程,實(shí)現(xiàn)應(yīng)用就是填充流程中的一個(gè)個(gè)點(diǎn)。
           所有的框架都是基于控制反轉(zhuǎn)的。Windows GUI開發(fā)也多是這樣。
          目的:高度抽象,設(shè)計(jì)框架
          關(guān)注點(diǎn):流程的設(shè)計(jì)
          ---------------------------------------------
          3,依賴注入
          原始的情況:
           應(yīng)用自己new 類,或者使用工廠模式創(chuàng)建類
          依賴注入:
           容器創(chuàng)建類,通過(guò)構(gòu)造函數(shù),setter方法,接口等方法,運(yùn)行時(shí)"注入"到應(yīng)用中

          實(shí)現(xiàn):
          Spring        setter方法
          webwork IOC  實(shí)現(xiàn)接口的方法
          pico   構(gòu)造函數(shù)的方法

          目的:完全分離開發(fā)
          關(guān)注點(diǎn):構(gòu)造對(duì)象

          ---------------------------------------------
          關(guān)系:
          "控制反轉(zhuǎn)"是"依賴倒置"的一種,"依賴注入"是在"控制反轉(zhuǎn)"的基礎(chǔ)上,讓容器來(lái)完成"注入"過(guò)程。
          ---------------------------------------------
          最需要依賴注入的情況:
          "調(diào)用者"和多個(gè)"被調(diào)用者"分別開發(fā),分別打包分發(fā),實(shí)施者根據(jù)實(shí)際情況決定使用哪個(gè)"被調(diào)用者"被使用
          做成可配制的,這種情況是經(jīng)常需要的。這個(gè)時(shí)候調(diào)用者內(nèi)不能出現(xiàn)這樣的代碼:
          interface inter = new interfaceimplA();類似的語(yǔ)句。因?yàn)槭褂玫目赡苁莍nterfaceimplB
          為了避免這樣語(yǔ)句的出現(xiàn),我們直接使用接口,而對(duì)象的構(gòu)造推遲,讓容器根據(jù)實(shí)施者的配制來(lái)構(gòu)造,并注入
          正確的位置。

           

           

           

           

           

           

           


           

          posted on 2006-12-04 17:57 dreamstone 閱讀(1887) 評(píng)論(0)  編輯  收藏 所屬分類: 設(shè)計(jì)模式

          主站蜘蛛池模板: 鞍山市| 平乐县| 宿迁市| 方正县| 宁德市| 宁海县| 盘锦市| 太白县| 枝江市| 哈尔滨市| 绿春县| 上杭县| 应城市| 白朗县| 房产| 方正县| 临沭县| 巩义市| 会东县| 丹寨县| 临桂县| 丰顺县| 菏泽市| 北宁市| 和顺县| 广河县| 江北区| 南昌县| 辛集市| 汉寿县| 阳高县| 淳化县| 增城市| 武邑县| 德格县| 新平| 资兴市| 沙河市| 宁城县| 邵东县| 富民县|