最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Clean Code 無瑕的程式碼 第11章 系統(tǒng)

2021-06-18 22:23 作者:tkchenhaha  | 我要投稿

? ?? ? 第十一章非常非常重要!內(nèi)容有難度作者談到了系統(tǒng),讀者要對(duì)java有一定層度的了解,才能完全明白第十一章的內(nèi)容,我對(duì)Java不熟,在網(wǎng)路上找了一些文章,勉強(qiáng)知道部分內(nèi)容。

你要如何建造一個(gè)城市?

作者用城市比喻軟體,城市如同系統(tǒng)軟體有很多區(qū)域,每個(gè)區(qū)域有各自的功能。

劃分系統(tǒng)的建造與使用

「建造」與「使用」應(yīng)該要分開,如同蓋房子與住房子是兩件不同的事情。

大部分的城市卻沒有把兩件事情分開,出現(xiàn)延遲初始的情況。

public Service getService(){

????if(service == null)

????????service = new MyServiceImpl(....);

????return service;

}

上面的例子包含了延遲初始/延遲賦質(zhì)(LAZY Initialization/Evaluation)

延遲初始/延遲賦質(zhì)寫法的優(yōu)點(diǎn)

要使用的時(shí)候,再建立物件

初始化時(shí)間變短

保證函式不回回傳null

延遲初始/延遲賦質(zhì)寫法的缺點(diǎn)

相依於MyServiceImpl,等於程式寫死

測(cè)試會(huì)較困難

違反單一職掌原則

作者主張「建造的過程」要從「正常邏輯」分離出來。

主函式Main的劃分

最簡(jiǎn)單的方法將「建造程式」都移到主函式main或主函式呼叫的模組builder。

11-1的圖寫明了順序

1.build 先new 物件

2.再run程式

工廠

第一種方法是建立好物件可當(dāng)做參數(shù)傳給應(yīng)用程式。有時(shí)候應(yīng)用程式要負(fù)責(zé)「何時(shí)」要產(chǎn)生物件,此時(shí)可用抽象工廠模式。

11-2 應(yīng)用程式要用LineItem物件的時(shí)候,呼叫工廠建造程式可以得到物件。

相依性注入

這段內(nèi)容談到相依性注入、控制反轉(zhuǎn)??蓞⒖纪鹾榱料壬闹鳌段业某淌酱a會(huì)說話》7.2 相依性注入

相依性注入的另外一個(gè)名字控制反轉(zhuǎn),這種方式實(shí)現(xiàn)了程式碼的熱插拔。採用相依性注入,可以透過 xml 來配置名稱和運(yùn)算,進(jìn)行更自由的擴(kuò)展。

我的理解是程式建立物件的過程中,可以讀取外部xml創(chuàng)建物件。xml可以更改,程式就不會(huì)寫死變得有彈性。

這篇文章寫得淺顯易懂

IoC基本概念介紹

https://ithelp.ithome.com.tw/articles/10156571

擴(kuò)大

小城市起初在興建的時(shí)候不會(huì)考慮到以後會(huì)不會(huì)變成大城市,同樣的情況小程式起初不會(huì)考慮未來會(huì)不會(huì)變成大程式。

保持適當(dāng)?shù)年P(guān)注點(diǎn)分離,軟體系統(tǒng)的架構(gòu)就能夠遞增地成長。

說人話就是要想辦法降低軟體與軟體之間的相依性,軟體才可以擴(kuò)展與重複使用。

橫切關(guān)注點(diǎn)

AOP 觀念與術(shù)語

https://openhome.cc/Gossip/SpringGossip/AOPConcept.html

Java代理機(jī)制

從代理機(jī)制初探 AOP

https://openhome.cc/Gossip/SpringGossip/FromProxyToAOP.html

看文中的圖就能明白Java代理的奧妙,第十一章後半段講述的AOP剖面設(shè)計(jì)都在做類似的事情,差別在於方法不同。

平常寫程式的時(shí)候?qū)憀og就直接加上去,實(shí)際上除錯(cuò)程式都是對(duì)原本商業(yè)程式的「破壞」,這段程式變得無法再利用,也會(huì)造成不利於測(cè)試驅(qū)動(dòng)開發(fā),AOP要解決程式被「破壞」的問題。

純Java? AOP 框架

動(dòng)態(tài)代理

https://openhome.cc/Gossip/SpringGossip/DynamicProxy.html


AspectJ 剖面設(shè)計(jì)

測(cè)試驅(qū)動(dòng)的系統(tǒng)架構(gòu)

最佳化決策

聰明地利用可明顯增加價(jià)值的標(biāo)準(zhǔn)

系統(tǒng)需要特定領(lǐng)域的語言

總結(jié)



Clean Code 無瑕的程式碼 第11章 系統(tǒng)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
闽清县| 江城| 广元市| 遂溪县| 利川市| 白河县| 阿荣旗| 临洮县| 佛教| 瓮安县| 和平区| 石河子市| 阿拉善盟| 山丹县| 皮山县| 宣化县| 革吉县| 黄大仙区| 峨山| 建昌县| 定西市| 宝鸡市| 定日县| 荥经县| 承德市| 钟山县| 岳阳县| 上饶市| 铜山县| 丹东市| 澄迈县| 宜宾县| 邹平县| 东台市| 富川| 南华县| 贵溪市| 贡山| 惠来县| 宜丰县| 若羌县|