日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
為什么要學(xué)設(shè)計(jì)模式:本質(zhì)、價(jià)值與收益

 [[379656]]

公司主營業(yè)務(wù):成都做網(wǎng)站、網(wǎng)站建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出寧鄉(xiāng)免費(fèi)做網(wǎng)站回饋大家。

01 設(shè)計(jì)模式的本質(zhì)

說起設(shè)計(jì)模式,就不得不說起重構(gòu)。在 2017 年,當(dāng)我還是一個(gè)工作 3 年的菜鳥,我重構(gòu)了公司一個(gè)十幾年的老系統(tǒng),弄得心力交瘁。為了能深刻吸取這次重構(gòu)的教訓(xùn),我寫了一篇文章記錄這次重構(gòu)的心得:淺談重構(gòu)中踩過的坑 - 陳樹義的博客。

時(shí)隔三年,我再次刷了一遍設(shè)計(jì)模式相關(guān)知識(shí),這次我對(duì)設(shè)計(jì)模式有了更深刻的認(rèn)識(shí)。所以今天我們就來聊聊:設(shè)計(jì)模式的本質(zhì)是什么?它的存在有什么價(jià)值?學(xué)了設(shè)計(jì)模式有什么好處?

在這篇文章中,我對(duì)設(shè)計(jì)模式的總結(jié)是:設(shè)計(jì)模式用于承載復(fù)雜的業(yè)務(wù)邏輯,使寫出的代碼簡潔、易擴(kuò)展。 簡單地說,你需要去了解業(yè)務(wù)中哪些是變化的,哪些是不變的。這些變化的東西就是復(fù)雜的業(yè)務(wù)邏輯,你需要思考如何用一種合適的設(shè)計(jì)模式去承載它,使得當(dāng)它發(fā)生變化的時(shí)候,能具有很好的擴(kuò)展性。這時(shí)候如果你學(xué)過設(shè)計(jì)模式,對(duì)每種設(shè)計(jì)模式的使用場(chǎng)景都諳熟于心,那你做起來會(huì)更加得心應(yīng)手。

有些人說,我看有些人也沒學(xué)過設(shè)計(jì)模式,但他們代碼也寫得挺好啊。這里我想表達(dá)我的第二個(gè)觀點(diǎn):抽象思維才是設(shè)計(jì)模式的內(nèi)核。 有些人接觸的項(xiàng)目多了,其在項(xiàng)目中不知不覺地就用到了一些設(shè)計(jì)模式。這些人一般都具有一個(gè)共同點(diǎn):抽象總結(jié)能力強(qiáng)。他們接觸到了東西多了,會(huì)不斷思考他們的共同之處,然后試圖總結(jié)出經(jīng)驗(yàn)。如果你具有這種抽象的思維,那即使你沒看過設(shè)計(jì)模式,你也能寫出類似于設(shè)計(jì)模式的代碼。甚至到最后,你也可以設(shè)計(jì)出一種獨(dú)特的設(shè)計(jì)模式。到時(shí)候你可能就成為了自創(chuàng)門派的「一代宗師」了。

02 設(shè)計(jì)模式的價(jià)值

對(duì)于設(shè)計(jì)模式,不少人也有很多見解。有的人覺得設(shè)計(jì)模式名過其實(shí),實(shí)際編程中遠(yuǎn)遠(yuǎn)沒有那么重要。在我看來,設(shè)計(jì)模式存在即合理,至少它有下面三點(diǎn)實(shí)在的意義。

設(shè)計(jì)模式是經(jīng)驗(yàn)沉淀,便于后來者快速學(xué)習(xí)。 人類之所以能一代更比一代強(qiáng),靠的就是用文字符號(hào)實(shí)現(xiàn)經(jīng)驗(yàn)傳承。而在編程領(lǐng)域,我們的設(shè)計(jì)模式其實(shí)就是前人在實(shí)戰(zhàn)中的經(jīng)驗(yàn)總結(jié),他們將這些經(jīng)驗(yàn)歸納出來成為設(shè)計(jì)模式。

對(duì)于經(jīng)驗(yàn)不是很多的人來說,學(xué)習(xí)設(shè)計(jì)模式可以讓他們有個(gè)初步的印象,等到他們有對(duì)應(yīng)的項(xiàng)目經(jīng)驗(yàn)時(shí),他們可以更好地應(yīng)用上。而對(duì)于項(xiàng)目經(jīng)驗(yàn)豐富的人來說,設(shè)計(jì)模式可以豐富他們的項(xiàng)目場(chǎng)景,進(jìn)一步提高他們對(duì)于復(fù)雜場(chǎng)景的掌控。

設(shè)計(jì)模式可以方便交流。 有些同學(xué)會(huì)覺得一些設(shè)計(jì)模式自己都用過,只不過先輩們給它起了個(gè)名字而已,沒什么大不了的。但不知道這位同學(xué)是否有思考過:為什么要給各個(gè)設(shè)計(jì)模式起一個(gè)名字?

我們的知道有顯性知識(shí)和隱形知識(shí)之分。顯性知識(shí)就是大家一說,我們都能聽得懂的。例如錘子可以用來釘釘子,例如搜索引擎可以用來搜索知識(shí)。而隱形知識(shí)則是指那些我們做事的經(jīng)驗(yàn),我們很難描述出來的東西。

我們這里說的設(shè)計(jì)模式,落地下去其實(shí)就是對(duì)應(yīng)的代碼結(jié)構(gòu)。但我們?nèi)绾螌⑦@種實(shí)戰(zhàn)中的經(jīng)驗(yàn)描述出來呢?一個(gè)最直接的方法是:我每次跟別人交流的時(shí)候,我都說:你這個(gè)創(chuàng)建一個(gè)接口,然后這個(gè)類繼承這個(gè)接口,然后 bla bla …… 可能你說了半天,人家也還沒聽懂。即使聽懂了,你下次還是得嘰里呱啦說半天,別人才能聽得懂。

怎樣才能讓別人一下子領(lǐng)會(huì)到我們的意思呢?很簡單,就是給這種代碼結(jié)構(gòu)起個(gè)名字嘛!這也才有了工廠方法、策略模式、模板模式這些名詞。當(dāng)你跟別人一說這個(gè)名字,別人就知道是怎么回事,這不就大大提高了溝通效率嘛!

生活中其實(shí)也有很多類似的例子。我們?yōu)槭裁磿?huì)有很多思考模型,例如:SMART 模型、PDCA 模型?本質(zhì)上就是用來幫助記憶,以及便于溝通的。

想想看「搜索引擎」這個(gè)詞,在 50 年前還不存在,那為什么有搜索引擎這個(gè)詞呢?不就是為了便于交流,讓別人知道是怎么回事嗎?假設(shè)沒有「搜索引擎」這個(gè)詞,我們要描述百度,我們得怎么描述?我們?cè)囈幌拢壕褪悄愦蜷_一個(gè)網(wǎng)頁,輸入詞語,然后會(huì)挑出來一大堆相關(guān)的信息。這樣還是挺麻煩的吧。

想想「五花肉」這個(gè)詞,可能在古代還真沒這個(gè)詞。那我們要怎么形容?古代人說:就是那種一點(diǎn)肥、一點(diǎn)瘦的豬肉。現(xiàn)代人三個(gè)字搞定:五花肉!多高效啊!

03 學(xué)設(shè)計(jì)模式的好處

聊完了設(shè)計(jì)模式的本質(zhì)和意義,最后我們聊聊設(shè)計(jì)模式的好處。

提高系統(tǒng)設(shè)計(jì)能力,代碼更簡潔,更易于擴(kuò)展。 在互聯(lián)網(wǎng)公司干過的都知道,研發(fā)流程里最確定的東西就是變化本身。需求是不可能一成不變的,唯一不變的就是需求會(huì)一直變。這就對(duì)研發(fā)人員提出了更高的要求,需要在系統(tǒng)設(shè)計(jì)的時(shí)候考慮到后續(xù)的擴(kuò)展。

設(shè)計(jì)模式本質(zhì)上就是對(duì)變化的封裝,用結(jié)構(gòu)化的代碼結(jié)構(gòu)去承載變化的需求。 當(dāng)你明白這一點(diǎn)后,你需要做的就是去分析出系統(tǒng)中變化的部分,之后采用合適的設(shè)計(jì)模式(代碼結(jié)構(gòu))去實(shí)現(xiàn)。只要變化的部分拆解得好,那你就有足夠強(qiáng)大的結(jié)構(gòu)去應(yīng)付變化的需求。

在這一個(gè)層次上,考驗(yàn)的其實(shí)是你對(duì)業(yè)務(wù)的理解,還有你掌握的設(shè)計(jì)模式的數(shù)量。這些將直接決定你是否能抽離出變化的部分,而抽離出變化的部分之后,你能不能找到合理的設(shè)計(jì)模式去承載。如果找不到,那你的「抽象思維」層次決定了你是否能自我創(chuàng)造一種設(shè)計(jì)模式。

設(shè)計(jì)模式可以幫助閱讀源碼、寫框架。 在我們現(xiàn)在使用的不少框架中,都使用了很多的設(shè)計(jì)模式。越是底層的系統(tǒng),他們就需要越抽象,他們使用到的設(shè)計(jì)模式就越多。例如:Spring 框架中使用到的設(shè)計(jì)模式就多達(dá)十幾種,有工廠模式、代理模式、模板模式等等。

當(dāng)你理解了這些設(shè)計(jì)模式之后,你再去閱讀源碼,你就能夠更快速地領(lǐng)會(huì)框架作者的意思。否則你看源碼只會(huì)像看天書一樣,完全看不懂,還吐槽這代碼怎么這么垃圾。

設(shè)計(jì)模式有利于你面試。 這點(diǎn)可以說是挺功利的一點(diǎn),但也確實(shí)是最實(shí)在的一點(diǎn)。工作三年以上的工程師,至少要會(huì)學(xué)習(xí)一些設(shè)計(jì)模式。只有掌握了合理的設(shè)計(jì)模式,你寫的功能才能更易于擴(kuò)展。這也是我們這些工作多年的老碼農(nóng),和剛畢業(yè)的小年輕的區(qū)別。

如果你工作了好幾年,寫代碼的時(shí)候還是從頭寫到尾短平快,不考慮一點(diǎn)擴(kuò)展性,那么你可能真的很容易被替代?,F(xiàn)今的面試中,也越來越考察面試者的代碼編寫能力了。掌握設(shè)計(jì)模式的思維方式,可以幫助你在面試中拿到更多的籌碼、贏得更高的薪資。

04 小結(jié)

設(shè)計(jì)模式本質(zhì)上是用于承載變化的業(yè)務(wù)邏輯,使寫出的代碼簡潔、易擴(kuò)展。它們就像武功中的招式,但具體的招式并不是目的,抽象思維才是設(shè)計(jì)模式的內(nèi)核。掌握了抽象的思維,你也能設(shè)計(jì)出屬于自己的模式。

設(shè)計(jì)模式是前人經(jīng)驗(yàn)的總結(jié),便于后來者快速學(xué)習(xí)。設(shè)計(jì)模式與菜名、標(biāo)簽一樣,是對(duì)代碼結(jié)構(gòu)的一種描述,便于我們交流。掌握了設(shè)計(jì)模式,能夠讓我們提高系統(tǒng)設(shè)計(jì)能力,使系統(tǒng)更易于擴(kuò)展。同時(shí)也能讓我們讀源碼、寫框架時(shí)事半功倍。

 本文轉(zhuǎn)載自微信公眾號(hào)「陳樹義」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系陳樹義公眾號(hào)。


分享名稱:為什么要學(xué)設(shè)計(jì)模式:本質(zhì)、價(jià)值與收益
文章轉(zhuǎn)載:http://www.5511xx.com/article/coooepp.html