很多IT從業(yè)人員進(jìn)入這個(gè)行業(yè)都是從學(xué)習(xí)一門編程語(yǔ)言開始的犯犁。對(duì)于編程享钞,我們往往過于關(guān)注語(yǔ)言的語(yǔ)法細(xì)節(jié)割岛,反而忽略了其背后的設(shè)計(jì)理念愉适。面向?qū)ο蟮乃伎歼^程就是一個(gè)非常優(yōu)秀的設(shè)計(jì)理念。它可以獨(dú)立于語(yǔ)言存在癣漆。如果你熟練掌握了面向?qū)ο蟮乃伎歼^程维咸,那么就可以輕松地在不同的面向?qū)ο蟮恼Z(yǔ)言之間切換。
本書透徹地闡述了面向?qū)ο筮@一概念。作者M(jìn)att在書中反復(fù)強(qiáng)調(diào)學(xué)習(xí)面向?qū)ο蟮乃伎歼^程優(yōu)于學(xué)習(xí)任何編程語(yǔ)言或工具癌蓖。事實(shí)上瞬哼,他也是這么做的。Matt闡述了面向?qū)ο蟮娜兀豪^承费坊、封裝倒槐、多態(tài),并且自己加上了第四個(gè)要素:組合附井。關(guān)于組合讨越,Matt不惜篇幅做了大量的講解,并且列舉了很多通俗易懂的例子永毅,這也是本書的一大特色把跨。
Matt也糾正了人們的一些普遍誤解,比如面向?qū)ο蟮姆妒脚c面向過程的范式并不是完全對(duì)立的關(guān)系沼死。而且在應(yīng)用面向?qū)ο蟮脑O(shè)計(jì)和開發(fā)時(shí)着逐,Matt也講解了不少如何與遺留系統(tǒng)集成的技巧。同時(shí)意蛀,Matt也簡(jiǎn)要介紹了UML這個(gè)建模利器耸别。為了不混淆重點(diǎn),他把介紹UML的章節(jié)放置在很靠后的位置县钥。因?yàn)樗靼仔憬悖攘私饷嫦驅(qū)ο蟮母黜?xiàng)概念是最重要的。
我雖然擁有多年的從業(yè)經(jīng)驗(yàn)若贮,但是再看本書時(shí)仍然有不少收獲省有。其實(shí)自從我接觸了函數(shù)式編程,就漸漸成為函數(shù)式編程的擁躉谴麦。我會(huì)時(shí)不時(shí)地“鼓吹”函數(shù)式編程范式的好處蠢沿,順便“貶低”一下面向?qū)ο缶幊獭5瑫r(shí)我也有個(gè)疑問匾效,既然函數(shù)式編程這么好舷蟀,為什么這幾年的發(fā)展只能算是波瀾不驚,而沒有掀起大風(fēng)浪呢面哼?讀了本書之后雪侥,我似乎找到了答案。首先面向?qū)ο蟮乃伎歼^程更加符合大家對(duì)世界的直觀感受精绎,畢竟不是每個(gè)人都是數(shù)學(xué)家。函數(shù)式編程可以簡(jiǎn)化很多問題锌妻,但它并不能簡(jiǎn)化所有問題代乃。其次是面向?qū)ο蟮木幊谭妒胶秃瘮?shù)式編程的范式并不是完全對(duì)立的,正如作者講過,面向過程的編程范式和面向?qū)ο蟮木幊谭妒揭膊皇峭耆珜?duì)立的搁吓。比如目前流行的一些語(yǔ)言(Scala原茅、Go等)都具備函數(shù)式的特點(diǎn),也兼具面向?qū)ο蟮奶攸c(diǎn)(只不過它們的面向?qū)ο蟮臋C(jī)制與傳統(tǒng)的方式有所不同)堕仔。所以無(wú)論你喜歡哪種編程范式擂橘,了解彼此的不同之處是至關(guān)重要的。而本書則是了解面向?qū)ο蠓妒降膬?yōu)秀書籍摩骨。
本書已經(jīng)更新到了第4版通贞。從本書長(zhǎng)達(dá)10多年的跨度來看,面向?qū)ο蠓妒浇?jīng)久不衰恼五。Matt也適時(shí)地在新版中加入了一些新的主題昌罩,比如可移植數(shù)據(jù)、分布式系統(tǒng)灾馒、Web服務(wù)等茎用。Matt不僅闡述了這些技術(shù),還講述了它們的前世今生睬罗。這樣可以幫助讀者更加充分地了解技術(shù)的演化之路轨功。
無(wú)論你是否有面向?qū)ο缶幊痰慕?jīng)驗(yàn),本書都適合你作為面向?qū)ο笏伎嫉穆贸涕_端容达。最后古涧,希望本書能給大家?guī)沓驳拈喿x體驗(yàn)。