今天與人閑談中無(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)資料黍衙、源碼泥畅、筆記、視頻琅翻!