欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Spring中IOC的原理及好處是什么

這篇文章將為大家詳細講解有關(guān)Spring中IOC的原理及好處是什么,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

創(chuàng)新互聯(lián)長期為上1000家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為呈貢企業(yè)提供專業(yè)的成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè),呈貢網(wǎng)站改版等技術(shù)服務(wù)。擁有十年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

設(shè)計模式7大原則

為什么會有人說設(shè)計模式已死呢,因為spring這些框架幫你做好了類和對象的管理,讓你寫代碼的時候只專注于你實現(xiàn)的功能,而不是設(shè)計。先來看看設(shè)計模式的7大原則:

  • 開放-封閉原則

  • 單一職責(zé)原則

  • 依賴倒轉(zhuǎn)原則

  • 最小知識原則

  • 接口隔離原則

  • 合成/聚合復(fù)用原則

  • 里氏代換原則,任何基類可以出現(xiàn)的地方,子類一定可以出現(xiàn)

依賴倒置

假設(shè)我們設(shè)計一輛汽車:先設(shè)計輪子,然后根據(jù)輪子大小設(shè)計底盤,接著根據(jù)底盤設(shè)計車身,最后根據(jù)車身設(shè)計好整個汽車。這里就出現(xiàn)了一個“依賴”關(guān)系:汽車依賴車身,車身依賴底盤,底盤依賴輪子。

這樣的設(shè)計看起來沒問題,但是可維護性卻很低。假設(shè)設(shè)計完工之后,上司卻突然說根據(jù)市場需求的變動,要我們把車子的輪子設(shè)計都改大一碼。這下我們就蛋疼了:因為我們是根據(jù)輪子的尺寸設(shè)計的底盤,輪子的尺寸一改,底盤的設(shè)計就得修改;同樣因為我們是根據(jù)底盤設(shè)計的車身,那么車身也得改,同理汽車設(shè)計也得改——整個設(shè)計幾乎都得改!我們現(xiàn)在換一種思路。我們先設(shè)計汽車的大概樣子,然后根據(jù)汽車的樣子來設(shè)計車身,根據(jù)車身來設(shè)計底盤,最后根據(jù)底盤來設(shè)計輪子。這時候,依賴關(guān)系就倒置過來了:輪子依賴底盤, 底盤依賴車身, 車身依賴汽車。

上司再說要改動輪子的設(shè)計,我們就只需要改動輪子的設(shè)計,而不需要動底盤,車身,汽車的設(shè)計了。這就是依賴倒置原則——把原本的高層建筑依賴底層建筑“倒置”過來,變成底層建筑依賴高層建筑。高層建筑決定需要什么,底層去實現(xiàn)這樣的需求,但是高層并不用管底層是怎么實現(xiàn)的。這樣就不會出現(xiàn)前面的“牽一發(fā)動全身”的情況。

控制反轉(zhuǎn)(Inversion of Control)

就是依賴倒置原則的一種代碼設(shè)計的思路。具體采用的方法就是所謂的依賴注入(Dependency Injection)。其實這些概念初次接觸都會感到云里霧里的。說穿了,

為了理解這幾個概念,我們還是用上面汽車的例子。只不過這次換成代碼。我們先定義四個Class,車,車身,底盤,輪胎。然后初始化這輛車,最后跑這輛車。

這樣,就相當(dāng)于上面第一個例子,上層建筑依賴下層建筑——每一個類的構(gòu)造函數(shù)都直接調(diào)用了底層代碼的構(gòu)造函數(shù)。假設(shè)我們需要改動一下輪胎(Tire)類,把它的尺寸變成動態(tài)的,而不是一直都是30。

由于我們修改了輪胎的定義,為了讓整個程序正常運行,我們需要做一下改動

僅僅是為了修改輪胎的構(gòu)造函數(shù),這種設(shè)計卻需要修改整個上層所有類的構(gòu)造函數(shù)!在軟件工程中,這樣的設(shè)計幾乎是不可維護的——在實際工程項目中,有的類可能會是幾千個類的底層,如果每次修改這個類,我們都要修改所有以它作為依賴的類,那軟件的維護成本就太高了。所以我們需要進行控制反轉(zhuǎn)(IoC),及上層控制下層,而不是下層控制著上層。我們用依賴注入(Dependency Injection)這種方式來實現(xiàn)控制反轉(zhuǎn)。所謂依賴注入,就是把底層類作為參數(shù)傳入上層類,實現(xiàn)上層類對下層類的“控制”。這里我們用構(gòu)造方法傳遞的依賴注入方式重新寫車類的定義。

這里我們再把輪胎尺寸變成動態(tài)的,同樣為了讓整個系統(tǒng)順利運行,我們需要做修改。

只需要修改輪胎類就行了,不用修改其他任何上層類。這顯然是更容易維護的代碼。不僅如此,在實際的工程中,這種設(shè)計模式還有利于不同組的協(xié)同合作和單元測試:比如開發(fā)這四個類的分別是四個不同的組,那么只要定義好了接口,四個不同的組可以同時進行開發(fā)而不相互受限制;而對于單元測試,如果我們要寫Car類的單元測試,就只需要Mock一下Framework類傳入Car就行了,而不用把Framework, Bottom, Tire全部new一遍再來構(gòu)造Car。這里我們是采用的構(gòu)造函數(shù)傳入的方式進行的依賴注入。其實還有另外兩種方法:Setter傳遞和接口傳遞。這里就不多講了,核心思路都是一樣的,都是為了實現(xiàn)控制反轉(zhuǎn)。

控制反轉(zhuǎn)容器(IoC Container)

其實上面的例子中,對車類進行初始化的那段代碼發(fā)生的地方,就是控制反轉(zhuǎn)容器。

顯然你也應(yīng)該觀察到了,因為采用了依賴注入,在初始化的過程中就不可避免的會寫大量的new。這里IoC容器就解決了這個問題。這個容器可以自動對你的代碼進行初始化,你只需要維護一個Configuration(可以是xml可以是一段代碼),而不用每次初始化一輛車都要親手去寫那一大段初始化的代碼。這是引入IoC Container的第一個好處。IoC Container的第二個好處是:我們在創(chuàng)建實例的時候不需要了解其中的細節(jié)。在上面的例子中,我們自己手動創(chuàng)建一個車instance時候,是從底層往上層new的。

關(guān)于Spring中IOC的原理及好處是什么就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

網(wǎng)站名稱:Spring中IOC的原理及好處是什么
文章分享:http://aaarwkj.com/article44/jesshe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機、自適應(yīng)網(wǎng)站定制網(wǎng)站、網(wǎng)站改版、外貿(mào)建站、小程序開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)
久久亚洲精品中文字幕馆| 久国产亚洲精品久久久极品| 人妻的秘密一区二区三区| 久久精品久久久精品| 日韩成人中文字幕电影| 亚洲精品色在线网站国产呦| 国产又粗又爽视频免费| 国产欧美高清在线观看视频| 九九热视频这里是精品| 国产欧美日韩综合激情| 日韩精品成人区中文字幕| 福利一区二区在线视频| 久久精品国产精品日韩欧美| 美女高潮久久久777| 日韩精品在线另类亚洲| 国产欧美一区二区三区久久| 亚洲国产欧美日韩激情在线| 日韩欧美中文字幕在线等| av中文字幕国产精品| 激情内射日本一区二区三区| 国产成人精品免费视频大| 熟女aaa一区二区午夜| 天堂中文在线免费观看av| 国产成人一区二区三区影| 亚洲三区久久婷婷激情| 精品少妇人妻av不卡久久| 日韩人成理论午夜福利| 欧美国产精品中文字幕| 2021久久国产综合精品青草| 久久久久亚洲av成人网人| 亚洲在线免费播放视频| 91精品国产高清久久福利| 亚洲视频一直看一直爽| 亚洲一区乱码精品中文| 人妻鲁丝一区二区三区| 日韩人妻中文字幕乱码一区| 成人一区二区三区播放| 亚洲乱码精品一区二区| 亚洲日本欧洲二区精品| 一区二区三区欧美黑人| 日韩在线视频观看一区二区三区|