金庸筆下的"程序員"

今天與人閑談中無(wú)意間提到了“倚天屠龍記”中的張無(wú)忌践宴,這是一個(gè)普通的甚至性格有點(diǎn)軟弱的主角鲸匿,性格復(fù)雜,很多人讀完小說(shuō)以后覺(jué)得他一點(diǎn)都不像一個(gè)英雄人物阻肩,與喬峰喬大俠带欢、郭靖郭大俠等相比,簡(jiǎn)直是差得太遠(yuǎn)了烤惊∏巧罚回來(lái)之后細(xì)細(xì)回味思索一番,除了張教主是不是英雄這個(gè)問(wèn)題外柒室,我意外地發(fā)現(xiàn)他的學(xué)藝之路竟然頗有啟發(fā)性渡贾,想來(lái)金庸大師也是哲學(xué)方面的高才啊。 下面讓我們一起來(lái)回憶一下張教主的學(xué)藝之路雄右,并結(jié)合金庸小說(shuō)中的各種成名絕技空骚,看是否有值得借鑒之處。

面向?qū)ο笏枷搿味蕉}

打通任督二脈擂仍,是修習(xí)高等武術(shù)的基礎(chǔ)和必經(jīng)步驟囤屹,大家看過(guò)武俠小說(shuō)的都知道,也基本都見(jiàn)識(shí)過(guò)了逢渔。之所以是基礎(chǔ)牺丙,道理很簡(jiǎn)單,如果任督二脈不通,真氣流轉(zhuǎn)不流暢冲簿,當(dāng)然就不能發(fā)揮自己體內(nèi)最大的能量了粟判。就好比一條非常細(xì)小的水渠,怎么能承受得了陡然暴發(fā)的洪水峦剔。 這一關(guān)通车到福看似簡(jiǎn)單,但是非常有難度吝沫,即使是主角兄弟們呻澜,也只是會(huì)“意外”通過(guò),一般都是借助了外力惨险,比如武功高強(qiáng)的師傅羹幸、能力超凡的道具、不可思議的奇遇辫愉,等等栅受。對(duì)于張教主來(lái)說(shuō),這一關(guān)在說(shuō)不得大師的乾坤布袋中順帶通過(guò)了恭朗,兇險(xiǎn)萬(wàn)分但非常輕松屏镊。對(duì)于大部分普通人來(lái)說(shuō),這一關(guān)可能終生都無(wú)法逾越痰腮,所以武功怎么練也無(wú)法達(dá)到上層境界而芥。

基本上,任何用過(guò)面向?qū)ο笳Z(yǔ)言(如Java膀值、C++棍丐、C#等)的同學(xué)們張口就能說(shuō)出面向?qū)ο蟮娜筇卣鳎豪^承、封裝沧踏、多態(tài)骄酗。但是又有幾個(gè)人曾試圖深層次地了解過(guò)這6 個(gè)字背后的含義呢?

話不多說(shuō) 悦冀,喜歡我就關(guān)注呦趋翻,下面為大家曬一點(diǎn)干貨,需要取經(jīng)的加架構(gòu)群:854818273

獲取學(xué)習(xí)Java高架構(gòu)盒蟆、分布式架構(gòu)踏烙、高可擴(kuò)展、高性能历等、高并發(fā)讨惩、性能優(yōu)化、Spring boot寒屯、Redis荐捻、ActiveMQ黍少、Nginx、Mycat处面、Netty厂置、Jvm大型分布式項(xiàng)目實(shí)戰(zhàn)學(xué)習(xí)架構(gòu)師視頻免費(fèi)獲取和Java高級(jí)架構(gòu)資料、源碼魂角、筆記昵济、視頻!

面向?qū)ο笏枷胧擒浖こ贪l(fā)展史上的偉大里程碑野揪,它提供了軟件設(shè)計(jì)與開發(fā)的新思路:那就是一切皆是對(duì)象访忿。這種思想體現(xiàn)了人們對(duì)世界的重新認(rèn)識(shí)。這種認(rèn)識(shí)體現(xiàn)到實(shí)際的行動(dòng)中斯稳,就是使用對(duì)象去表述世界發(fā)展的一切活動(dòng)海铆。為了生動(dòng)描述事物之間特性的傳承性,“繼承”就誕生了挣惰;為了描述事物之間相同特性基礎(chǔ)上表現(xiàn)出來(lái)的差異性卧斟,于是“多態(tài)”就被創(chuàng)造出來(lái);為了描述事物的完整性和相對(duì)封閉性通熄,“封裝”就提上了日程唆涝,細(xì)節(jié)從此不需要再去關(guān)注找都。這是面向?qū)ο笫澜缬^的三大基本特征唇辨,也是面向?qū)ο笤O(shè)計(jì)的核心根基,只有深刻理解了它們能耻,時(shí)時(shí)刻刻記住它們赏枚,把它們深深地融入到你的日常活動(dòng)中去晓猛,你的神功才會(huì)一日千里饿幅。

面向?qū)ο笤O(shè)計(jì)原則——九陽(yáng)神功

當(dāng)你能做到任何時(shí)候、任何場(chǎng)合戒职,眼中只有對(duì)象的時(shí)候栗恩,那么恭喜你,你的任督二脈已經(jīng)打通洪燥!你可以學(xué)習(xí)任何一門高深的內(nèi)功了磕秤。為什么先學(xué)習(xí)內(nèi)功呢?這個(gè)大家也都非常熟悉捧韵,沒(méi)有內(nèi)功的配合市咆,任何高深的招式都是浮云。所以要想天下無(wú)敵胎撤,必須要練就一身深厚的內(nèi)功辛燥,比如九陽(yáng)神功。

對(duì)象的三大特征全都有了茂洒,表明在你眼中一切都應(yīng)該是對(duì)象了搜变,你已經(jīng)是面向?qū)ο罅瞬筛浚遣⒉皇钦f(shuō)這就是好的面向?qū)ο罅恕?/p>

如何評(píng)判一個(gè)系統(tǒng)是好的面向?qū)ο竽兀?一般是參照“SOLID”標(biāo)準(zhǔn)。 單一職責(zé)原則(SRP):做一個(gè)專一的人 做好并且只做好一件事痹雅,這條原則其實(shí)不僅僅適用于對(duì)象仰担,同樣適用于函數(shù)、變量等一切編程元素绩社。當(dāng)然摔蓝,在商業(yè)模式中,將一件事做到極致就是成功愉耙,筆者覺(jué)得也還是成立的贮尉。 開放封閉原則(OCP):改造世界大部分不是破壞原來(lái)的秩序在對(duì)象世界中,添加新的功能一般意味著新的對(duì)象朴沿,一個(gè)好的設(shè)計(jì)也意味著這個(gè)新的修改不要大幅度波及現(xiàn)有的對(duì)象猜谚。這一條理解起來(lái)簡(jiǎn)單,實(shí)施起來(lái)卻最是困難赌渣。無(wú)數(shù)的模式和解耦方法都是為了達(dá)到這個(gè)目的而誕生的魏铅。 里氏替換原則(LSP):長(zhǎng)大后,我就成了你 父類使用的地方坚芜,子類也可以使用览芳。這一條希望子類不要破壞父類的接口成員,一旦破壞了鸿竖,就如同人與人之間破壞合同一樣沧竟,有時(shí)候會(huì)很糟糕。 接口分離原則(ISP):不要一口吃成胖子 接口不要過(guò)于龐大缚忧,繁雜的東西是難以理解悟泵、難以擴(kuò)展、難以修改的闪水。這一條的目的與單一職責(zé)原則類似糕非,不過(guò)是更加強(qiáng)調(diào)了接口的邏輯一致性和簡(jiǎn)易性。 依賴倒置原則(DIP):抽象的藝術(shù)才有生命力 高層與底層組件之間都應(yīng)該依賴于抽象的組件球榆。這一條深刻揭示了抽象的生命力朽肥,抽象的對(duì)象才是最有表達(dá)能力的對(duì)象,因?yàn)樗ǔJ恰盁o(wú)形”的芜果,可以隨時(shí)填充相關(guān)的細(xì)節(jié)鞠呈。

除了這幾個(gè)基本的設(shè)計(jì)原則外,還有一些衍生原則右钾,掌握它們蚁吝,你將能更好地面向?qū)ο蟆?迪米特法則:盡量不與無(wú)關(guān)的類發(fā)生關(guān)系旱爆。 對(duì)象之間聯(lián)系越是簡(jiǎn)單,則越是容易管理窘茁。 好萊塢法則:不要調(diào)用我怀伦,讓我調(diào)用你。 電影中常說(shuō)山林,單線聯(lián)系最安全房待,就是這樣。 多使用組合驼抹,少使用繼承 復(fù)用的手段除了繼承這種強(qiáng)約束手段外桑孩,組合這種弱耦合的關(guān)系更加靈活。 實(shí)現(xiàn)依賴于抽象 這一點(diǎn)一般也稱為面向接口編程框冀,保證了對(duì)象之間關(guān)系穩(wěn)定流椒。

修煉完這些原則,你已經(jīng)神功初成了明也,那是不是活動(dòng)活動(dòng)手腳宣虾,就可以大干一場(chǎng)了呢?

話不多說(shuō) 温数,喜歡我就關(guān)注呦绣硝,下面為大家曬一點(diǎn)干貨,需要取經(jīng)的加架構(gòu)群:854818273

獲取學(xué)習(xí)Java高架構(gòu)撑刺、分布式架構(gòu)鹉胖、高可擴(kuò)展、高性能猜煮、高并發(fā)次员、性能優(yōu)化败许、Spring boot王带、Redis、ActiveMQ市殷、Nginx愕撰、Mycat、Netty醋寝、Jvm大型分布式項(xiàng)目實(shí)戰(zhàn)學(xué)習(xí)架構(gòu)師視頻免費(fèi)獲取和Java高級(jí)架構(gòu)資料搞挣、源碼、筆記音羞、視頻囱桨!

模式——乾坤大挪移

當(dāng)張無(wú)忌學(xué)會(huì)了九陽(yáng)神功下山以后,他已經(jīng)身負(fù)絕世內(nèi)功了嗅绰,但是不知大家發(fā)現(xiàn)了沒(méi)有舍肠,他居然連最普通搀继,只會(huì)些三腳貓功夫的毛賊都打不過(guò),他只能依靠阿蛛的招式翠语,來(lái)借力反擊叽躯,只是這樣談何天下無(wú)敵呢。不過(guò)當(dāng)他學(xué)會(huì)了乾坤大挪移以后肌括,那真的是如同鳳凰涅槃点骑,瞬間完成了超級(jí)賽亞人變身。這個(gè)道理似乎也很簡(jiǎn)單谍夭,光有高深的內(nèi)功黑滴,但是沒(méi)有運(yùn)轉(zhuǎn)自如、充分發(fā)揮內(nèi)功的招式紧索,同樣也是不成的跷跪。招式,那可是前輩們經(jīng)驗(yàn)的總結(jié)齐板,是精華啊吵瞻。學(xué)會(huì)了這個(gè),你才有決勝天下的資本甘磨。

世間原本沒(méi)有模式橡羞,使用的人多了,才有了模式济舆。模式是經(jīng)驗(yàn)的總結(jié)卿泽,是“巨俠”們的心血。 大型模式如架構(gòu)模式(分層滋觉、MVC签夭、PAC、黑板椎侠、中間人第租、反射、管道我纪、微核慎宾、REST 架構(gòu)等),它們描述了系統(tǒng)大骨架的構(gòu)建過(guò)程浅悉; 中等規(guī)模的模式如設(shè)計(jì)模式(GOF 23種模式趟据、POSA 中的各種設(shè)計(jì)模式),它們描述了子系統(tǒng)中組件的構(gòu)建過(guò)程术健; 小的模式如各種語(yǔ)言中的編程實(shí)踐(C#中的IDispose模式汹碱、C++中的Counted Point)模式等,它們描述了解決語(yǔ)言中特定問(wèn)題的實(shí)施方案荞估。 這些模式合起來(lái)就是面向?qū)ο蟪绦蛟O(shè)計(jì)過(guò)程中針對(duì)特定問(wèn)題的乾坤大挪移神功咳促。

重構(gòu)——太極拳

如果一定要評(píng)出金庸小說(shuō)中的三大巔峰神功色难,那么太極拳必能入選。練習(xí)太極拳是需要超凡的悟性的等缀,太極拳重在以意運(yùn)轉(zhuǎn)枷莉,不能有絲毫外在強(qiáng)加的約束,這一點(diǎn)看過(guò)原著的同學(xué)們都很清楚尺迂。自從太極拳問(wèn)世后笤妙,人們才真正體會(huì)到了什么叫做“以柔克剛”!

重構(gòu)是精心打磨噪裕、持續(xù)雕琢代碼的過(guò)程蹲盘,是任何資深碼農(nóng)的必備技能。重構(gòu)不是無(wú)目的的膳音,重構(gòu)是一種在不改變代碼行為的前提下召衔,改善代碼可讀性、可擴(kuò)展性的過(guò)程祭陷。 之所以需要重構(gòu)苍凛,就是因?yàn)榇a也是符合事物發(fā)展規(guī)律的,也有一個(gè)從出生到成長(zhǎng)兵志,從強(qiáng)壯到衰敗醇蝴,從衰敗到腐爛的過(guò)程,而且是循序漸進(jìn)的想罕,不知不覺(jué)地就從好變爛了悠栓。毫無(wú)疑問(wèn),并不是所有的爛代碼都是一次寫成的按价,也許最初的代碼設(shè)計(jì)是很好的惭适,但是一旦被多個(gè)人修改過(guò)以后,就變壞了楼镐,很多人對(duì)此都深有體會(huì)癞志。代碼總是在所有人的共同“努力”下寫爛的。 如果說(shuō)上面提到的那些技術(shù)都有跡可循鸠蚪、規(guī)則性比較強(qiáng)的話今阳,那么相對(duì)來(lái)說(shuō)师溅,重構(gòu)的技術(shù)要相對(duì)柔和一點(diǎn)茅信,沒(méi)有那么強(qiáng)烈的約束條款,而且雖然也有像介紹“代碼壞味道”的偉大著作(《重構(gòu)》一書)誕生墓臭,但是蘸鲸,通常人們腦海中對(duì)于重構(gòu)的沖動(dòng),從沒(méi)有像使用模式那么強(qiáng)烈窿锉,根本不會(huì)想到重構(gòu)會(huì)是那么的重要酌摇,就如同書中的那些高人們根本不會(huì)想到如此緩慢而且無(wú)固定招式的太極拳會(huì)是那么強(qiáng)悍一樣膝舅。重構(gòu)與太極拳一樣,進(jìn)行到多大程度和畫多大多小的圈窑多,都無(wú)法明確衡量仍稀,它們都是真正的“意識(shí)流”。

抽象與組合——獨(dú)孤九劍

要說(shuō)金庸小說(shuō)中最厲害的武功埂息,筆者認(rèn)為既不是乾坤大挪移技潘,也不是太極拳,更不是葵花寶典千康,而是獨(dú)孤九劍享幽。那是什么境界啊拾弃?九劍破遍天下任何拳腳值桩、氣功、暗器豪椿、十八般兵器奔坟,這才叫“無(wú)敵”。當(dāng)然搭盾,這個(gè)武功不是隨便是誰(shuí)都能練得成的蛀蜜,也就是像令狐沖那樣智慧超群,灑脫異常增蹭,具備一定內(nèi)功(后期更輔助以吸星大法)滴某,武功又雜的小哥才能練;而且這個(gè)練習(xí)過(guò)程一般也比較長(zhǎng)滋迈,據(jù)風(fēng)清揚(yáng)介紹霎奢,令狐老兄刻苦練習(xí)十幾年后方能與東方不敗一戰(zhàn)。 我們?cè)倏纯丛撋窆υ瓌?chuàng)者獨(dú)孤大俠一輩子兵器的變遷:從利劍到重劍饼灿,到木劍幕侠,再到無(wú)劍。大家發(fā)現(xiàn)了沒(méi)有碍彭,到了最后拋開一切招式晤硕、內(nèi)功,融會(huì)貫通庇忌,水乳的交融以后舞箍,才是真正的超凡入圣,這個(gè)時(shí)候也才發(fā)現(xiàn)原來(lái)一切又回到了起點(diǎn):原來(lái)武功就是這么簡(jiǎn)單皆疹,就是鍛煉與發(fā)揮人體的最大能量疏橄,隨便地一揮一灑就有無(wú)與倫比的威力。返璞歸真才是武者的終極、青銅門后面的永恒(出自盜墓筆記一書)捎迫。

不管是面向過(guò)程晃酒,還是面向?qū)ο螅还苁敲嫦蚪M件窄绒,還是面向服務(wù)贝次,歸根結(jié)底只不過(guò)是人們對(duì)世界的抽象方式和抽象的粒度不同而已,把抽象出來(lái)的東西組合起來(lái)彰导,形成一定的規(guī)范和流程浊闪,依靠這些去解決實(shí)際的需求,這就是編程螺戳。抽象與組合搁宾,才是終極的藝術(shù)。

話不多說(shuō) 倔幼,喜歡我就關(guān)注呦盖腿,下面為大家曬一點(diǎn)干貨,需要取經(jīng)的加架構(gòu)群:854818273

獲取學(xué)習(xí)Java高架構(gòu)损同、分布式架構(gòu)翩腐、高可擴(kuò)展、高性能膏燃、高并發(fā)茂卦、性能優(yōu)化、Spring boot组哩、Redis等龙、ActiveMQ、Nginx伶贰、Mycat蛛砰、Netty、Jvm大型分布式項(xiàng)目實(shí)戰(zhàn)學(xué)習(xí)架構(gòu)師視頻免費(fèi)獲取和Java高級(jí)架構(gòu)資料黍衙、源碼泥畅、筆記、視頻琅翻!



?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末位仁,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子方椎,更是在濱河造成了極大的恐慌聂抢,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辩尊,死亡現(xiàn)場(chǎng)離奇詭異涛浙,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)摄欲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門轿亮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人胸墙,你說(shuō)我怎么就攤上這事我注。” “怎么了迟隅?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵但骨,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我智袭,道長(zhǎng)奔缠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任吼野,我火速辦了婚禮校哎,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘瞳步。我一直安慰自己闷哆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布单起。 她就那樣靜靜地躺著抱怔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪嘀倒。 梳的紋絲不亂的頭發(fā)上屈留,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音测蘑,去河邊找鬼绕沈。 笑死,一個(gè)胖子當(dāng)著我的面吹牛帮寻,可吹牛的內(nèi)容都是我干的乍狐。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼固逗,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼浅蚪!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起烫罩,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤惜傲,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后贝攒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體盗誊,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了哈踱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片荒适。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖开镣,靈堂內(nèi)的尸體忽然破棺而出刀诬,到底是詐尸還是另有隱情,我是刑警寧澤邪财,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布陕壹,位于F島的核電站,受9級(jí)特大地震影響树埠,放射性物質(zhì)發(fā)生泄漏糠馆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一怎憋、第九天 我趴在偏房一處隱蔽的房頂上張望又碌。 院中可真熱鬧,春花似錦盛霎、人聲如沸赠橙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)期揪。三九已至,卻和暖如春规个,著一層夾襖步出監(jiān)牢的瞬間凤薛,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工诞仓, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留缤苫,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓墅拭,卻偏偏與公主長(zhǎng)得像活玲,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子谍婉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容