<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Asktalk

    天行健,君子以自強(qiáng)不息!
    posts - 21, comments - 79, trackbacks - 0, articles - 2
      BlogJava :: 首頁(yè) ::  :: 聯(lián)系 :: 聚合  :: 管理

     


    J2EE開發(fā)正在變得越來越復(fù)雜,J2EE已經(jīng)發(fā)展為一個(gè)API、復(fù)雜化的編程和配置的復(fù)雜網(wǎng)絡(luò)。這幾年,新的框架和方法不斷涌現(xiàn)從一定程度上緩解了開發(fā)的復(fù)雜和降低了開發(fā)的成本,但是要把這些Framework整合起來,如Struts,JSF,Webwork,Hibernate,JDO等等,并不是那么容易,就目前來看這個(gè)職位只有Spring能夠勝任,采用的就是IoC技術(shù)。那么反向控制到底什么?

    其實(shí)很簡(jiǎn)單。IOC(Inversion of control)和OOP中DIP(dependence Inversion )和Martin Fowler 稱Dependency Injection(http://martinfowler.com/articles/injection.html)三者一樣。又稱好萊塢原則。目的要減少耦合。

    反向控制(IoC)/依賴注入,這是Spring的核心,也是精髓。所謂IoC,對(duì)于spring框架來說,就是由Spring來負(fù)責(zé)控制對(duì)象的生命周期和對(duì)象間的關(guān)系。簡(jiǎn)單來說,

    傳統(tǒng)的程序開發(fā),在一個(gè)對(duì)象中,如果要使用另外的對(duì)象,就必須得到它(自己new一個(gè),或者從JNDI中查詢一個(gè)),使用完之后還要將對(duì)象銷毀(比如Connection等),對(duì)象始終會(huì)和其他的接口或類藕合起來。

     

     那么IoC是如何做的呢?有點(diǎn)像通過婚介找女朋友,在我和女朋友之間引入了一個(gè)第三者:婚姻介紹所。婚介管理了很多男男女女的資料,我可以向婚介提出一個(gè)列表,告訴它我想找個(gè)什么樣的女朋友,比如長(zhǎng)得像林心如,身材像林熙雷,唱歌像周杰倫,忽悠的像趙本山,技術(shù)像羅納爾多之類的,然后婚介(Spring)就會(huì)按照我們的要求,提供一個(gè)MM,我們只需要去和她談戀愛、結(jié)婚。如果婚介給我們的人選不符合要求,我們就會(huì)拋出異常。整個(gè)過程不再由我自己控制,而是有婚介(Spring)這樣一個(gè)類似容器的機(jī)構(gòu)來控制。所有的類都會(huì)在spring容器中登記,告訴spring你的屬性和方法,你需要什么女朋友,然后spring會(huì)在系統(tǒng)運(yùn)行到適當(dāng)?shù)臅r(shí)候,把你要的女朋友主動(dòng)給你,同時(shí)也把你交給其他需要你的資源。所有的類的創(chuàng)建、銷毀都由spring來控制,也就是說控制對(duì)象生存周期的不再是引用它的對(duì)象,而是spring。對(duì)于某個(gè)具體的對(duì)象而言,以前是它控制其他對(duì)象,現(xiàn)在是所有對(duì)象都被spring控制,所以這叫控制反轉(zhuǎn)。

     

     IoC的一個(gè)重點(diǎn)是在系統(tǒng)運(yùn)行中,動(dòng)態(tài)的向某個(gè)對(duì)象提供它所需要的其他對(duì)象。這一點(diǎn)是通過DI(Dependency Injection,依賴注入)來實(shí)現(xiàn)的。少耦合使用配置文件,起初TXT,  到Window's ini文件,注冊(cè)表,到近期xml文件。怎么讀配置文件?現(xiàn)在一般都有專門的類(configuration,或context)。然后用工廠模式(Factory類),通過Java 反射(reflection)實(shí)例化具體類(instance)。主程序商業(yè)邏輯使用抽象類(Abstact)或接口。

     

    Java 1.3之后一個(gè)重要特征是反射(reflection),它允許程序在運(yùn)行的時(shí)候動(dòng)態(tài)的生成對(duì)象、執(zhí)行對(duì)象的方法、改變對(duì)象的屬性,spring就是通過反射來實(shí)現(xiàn)注入的。關(guān)于反射的相關(guān)資料請(qǐng)查閱java doc。

     

    總之,降低耦合性是java發(fā)展的方向,現(xiàn)在除了IoC,我還沒有找到更合適的解耦方法,歡迎大家批評(píng),這僅是個(gè)人看法!

     


    評(píng)論

    # re: 流行FrameWork整合之Spring­­—— IoC反向控制篇  回復(fù)  更多評(píng)論   

    2006-06-14 21:03 by 綠色使者、綠色心情
    還可以采用消息隊(duì)列的,耦合性更加低

    # re: 流行FrameWork整合之Spring­­—— IoC反向控制篇  回復(fù)  更多評(píng)論   

    2006-12-08 10:14 by 過客[匿名]
    不錯(cuò)

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 日韩精品福利片午夜免费观着 | 永久在线观看免费视频| 久久噜噜噜久久亚洲va久| 91精品国产免费久久久久久青草| 在线综合亚洲欧洲综合网站| 亚洲伊人成无码综合网 | 久久精品国产亚洲AV无码麻豆| 好男人看视频免费2019中文| 一级黄色免费网站| 亚洲福利电影在线观看| 国产a不卡片精品免费观看| 精品在线免费观看| 怡红院亚洲红怡院在线观看| 久久精品国产亚洲AV大全| 亚洲AV无码乱码在线观看性色扶| 91精品啪在线观看国产线免费| 另类专区另类专区亚洲| 内射干少妇亚洲69XXX| 免费大片在线观看网站| 亚洲高清免费在线观看| 国产高清对白在线观看免费91| 亚洲成av人片不卡无码| 国产亚洲精品AA片在线观看不加载| 国产成人精品免费视频网页大全| 一二三区免费视频| 亚洲人成色4444在线观看| 少妇中文字幕乱码亚洲影视| 久久99亚洲综合精品首页| 免费无码看av的网站| 午夜免费1000部| 日本人成在线视频免费播放| 草久免费在线观看网站| 亚洲国产日韩精品| 亚洲视频在线观看地址| 久久精品国产亚洲沈樵| 亚洲日韩国产成网在线观看| 毛色毛片免费观看| 日本黄网站动漫视频免费| 久久国产免费一区| a级毛片免费高清毛片视频| 日韩在线视频播放免费视频完整版|