偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

寫了這么多年代碼,你真的了解設(shè)計(jì)模式么?

開(kāi)發(fā) 開(kāi)發(fā)工具
面向?qū)ο笤瓌t,設(shè)計(jì)模式,簡(jiǎn)單設(shè)計(jì),重構(gòu)到模式……看起來(lái)都是常規(guī)操作,但你有想過(guò)他們的關(guān)系么?

面向?qū)ο笤瓌t,設(shè)計(jì)模式,簡(jiǎn)單設(shè)計(jì),重構(gòu)到模式……看起來(lái)都是常規(guī)操作,但你有想過(guò)他們的關(guān)系么?

[[245292]]

忍不住要山寨一段《寫了這么多年代碼,你真的了解SOLID嗎?》中的發(fā)言:

上面提到的每一項(xiàng)大家都耳熟能詳,但我發(fā)現(xiàn)大部分開(kāi)發(fā)者并沒(méi)有真正理解。要獲得***收益,就必須理解它們之間的關(guān)系,并綜合應(yīng)用所有這些原則。只有把它們作為一個(gè)整體,才可能構(gòu)建出堅(jiān)實(shí)(Solid)的軟件。遺憾的是,我們看到的書(shū)籍和文章都在羅列每個(gè)原則,沒(méi)有把它們作為一個(gè)整體來(lái)看,甚至提出這幾項(xiàng)的知名大叔們也沒(méi)能講透徹。因此我嘗試介紹一下我的理解。

面向?qū)ο笤瓌t(OO+SOLID )

偷懶一下,請(qǐng)大家移步,直接參考文章《寫了這么多年代碼,你真的了解SOLID嗎?》,記得回來(lái)呦~

簡(jiǎn)單理解,面向?qū)ο笤瓌t給我們提供了一系列面向?qū)ο笊舷挛南碌?**實(shí)踐,指導(dǎo)原則和***目標(biāo),符合這些原則可以幫助我們***化OO的威力。

如果把面向?qū)ο箢惐瘸绍浖_(kāi)發(fā)領(lǐng)域的一個(gè)武林門派,面向?qū)ο笤瓌t就是這個(gè)門派的***心法和目標(biāo),打個(gè)比方,有點(diǎn)像:心與意合,意與氣合,氣與力合,肩與胯合,肘與膝合,手與足合……這種。

心法這種東西就是神神秘秘的,真正看起來(lái)也簡(jiǎn)單,字面上也不難理解,很容易用它來(lái)挑戰(zhàn)別人:“你看你看,你沒(méi)有做到手與足合!”

但是回到自己,要想做到就難了,知易行難!

歸其原因它雖然提供了目標(biāo)和評(píng)價(jià)標(biāo)準(zhǔn),使我們很容易拿他來(lái)評(píng)價(jià)別人,但并沒(méi)有告訴我們自己如何才能達(dá)到這樣的目標(biāo)和標(biāo)準(zhǔn)。

[[245293]]

設(shè)計(jì)模式(Design Pattern)

那設(shè)計(jì)模式是什么?

很多人,包括我在內(nèi),都曾迷陷于23種設(shè)計(jì)模式之中,初識(shí)設(shè)計(jì)模式,贊嘆于其精妙,就像個(gè)萌新的江湖小生,偶然間掉到個(gè)山洞,一下就集齊了威震江湖的“7種武器”。

然后……就開(kāi)始了用長(zhǎng)生劍切菜,用碧玉刀削瓜的“幸福生活”,不但把簡(jiǎn)單的事情搞得巨復(fù)雜,最不能忍的是還暴殄天物!

回到設(shè)計(jì)模式,無(wú)非是在面向?qū)ο笤瓌t這些虛無(wú)縹緲的“心法”指導(dǎo)原則下,那些前輩大神們留下的“招式”或是“套路”而已。但招式和套路并不能致勝,它只是為我們這等小白提供了一個(gè)接近大神,理解心法的途徑而已,通過(guò)長(zhǎng)年累月的模仿去反思去領(lǐng)悟去體會(huì)“心法”的本質(zhì)和精妙,此時(shí)腦中不禁浮現(xiàn)《少林寺》中李連杰夏練三九冬練三伏的畫面……

這就能解釋為什么使用同樣的招式,大神們總能一擊致命,而我們卻總是被按倒在地摩擦的原因了。

簡(jiǎn)單設(shè)計(jì)(SimpleDesign)

設(shè)計(jì)模式是套路和招式,那簡(jiǎn)單設(shè)計(jì)是什么?

首先要區(qū)分一下簡(jiǎn)單設(shè)計(jì)和容易設(shè)計(jì):

簡(jiǎn)單的反義詞是復(fù)雜,容易的反義詞是困難。簡(jiǎn)單不等于容易,追求簡(jiǎn)單的過(guò)程往往很困難,如果只是追求容易的往往導(dǎo)致系統(tǒng)過(guò)于復(fù)雜。

這是好多年前一位同事提到過(guò)的一句話,很在點(diǎn)兒上,我們經(jīng)?;煜撕?jiǎn)單和容易,對(duì)于這點(diǎn),另一位同事之前也寫過(guò)一篇文章來(lái)闡述做到“簡(jiǎn)單”的“困難”。

做為結(jié)果的簡(jiǎn)單設(shè)計(jì)是這么一種設(shè)計(jì),它能被幾乎所有人理解, 但只有極少數(shù)人能做出. 或者反過(guò)來(lái)說(shuō)也可以. 簡(jiǎn)單設(shè)計(jì)是一種只有極少數(shù)人能做出的設(shè)計(jì),但設(shè)計(jì)一旦做出后,能被所有人理解。

可見(jiàn)簡(jiǎn)單設(shè)計(jì)是一種只有極少數(shù)人能做出的設(shè)計(jì),那我們?cè)趺床拍艹蔀槟?ldquo;極少數(shù)人“呢?

對(duì)此,Kent Beck給出了清晰的答案:

  • 通過(guò)所有測(cè)試(Passes its tests)
  • 盡可能消除重復(fù) (Minimizes duplication)
  • 盡可能清晰表達(dá) (Maximizes clarity)
  • 更少代碼元素 (Has fewer elements)
  • 以上四個(gè)原則的重要程度依次降低。

這組定義被稱做簡(jiǎn)單設(shè)計(jì)原則。

我們不具體探討這幾個(gè)原則,回到最初的問(wèn)題,如果說(shuō)面向?qū)ο笤瓌t是”心法“是”目標(biāo)“,設(shè)計(jì)模式是前輩們沉淀下來(lái)的”套路”和“招式“的話,那簡(jiǎn)單設(shè)計(jì)是什么呢?

我覺(jué)得就是實(shí)戰(zhàn)指導(dǎo)原則,他可以讓我們不局限于哪些經(jīng)典的過(guò)往的招式,跳出套路,無(wú)招勝有招。

[[245294]]

如果說(shuō)設(shè)計(jì)模式是一種自上而下,通過(guò)不斷模仿前輩大神套路達(dá)到目標(biāo)的一條道路的話(有招勝無(wú)招);那簡(jiǎn)單設(shè)計(jì)原則則是另一條自下而上,忘掉招式和套路,遵循簡(jiǎn)單的基本原則,隨機(jī)應(yīng)變,不斷演進(jìn),不斷浮現(xiàn),逐步逼近目標(biāo)的另一條道路(無(wú)招勝有招)。

但,記住,殊途同歸。

好,這位客官問(wèn)了,那兩條道路都可以幫我們掌握武功***的心法的目標(biāo),我走哪條呢?如果我已經(jīng)會(huì)了一條,還需要學(xué)習(xí)另一條路徑么?

重構(gòu)到模式(Refactor to DesignPattern)

說(shuō)到這里,就不難理解“重構(gòu)到模式”到底在說(shuō)什么了吧。

它無(wú)非是在解釋如何通過(guò)自下而上應(yīng)用簡(jiǎn)單設(shè)計(jì)原則,運(yùn)用重構(gòu)的技術(shù)和手法,浮現(xiàn)出設(shè)計(jì)模式。我管這個(gè)過(guò)程叫“重走長(zhǎng)征路”,重新體驗(yàn)一下那些大神前輩們創(chuàng)建發(fā)現(xiàn)設(shè)計(jì)模式的過(guò)程。

這個(gè)過(guò)程也再次證明了這兩條通往同一個(gè)目標(biāo)的不同的道路也是可以相互轉(zhuǎn)換的,它們只不過(guò)是面向?qū)ο笤瓌t下的兩種不同形式的表現(xiàn)而已。

如果說(shuō)“設(shè)計(jì)模式”是“有招勝無(wú)招”,“簡(jiǎn)單設(shè)計(jì)”是“無(wú)招勝有招”的話,那“重構(gòu)到模式”就是“無(wú)招生有招”的過(guò)程。

總結(jié)

總的來(lái)說(shuō),我們可以把這幾個(gè)概念作為一個(gè)整體框架來(lái)思考。

“面向?qū)ο笤瓌t”是OO領(lǐng)域的***目標(biāo),是面向?qū)ο筮@門武功的心法,很容易用來(lái)評(píng)判別人,但是自己卻很難達(dá)到。

為了能達(dá)到心法的境界,之前的各任掌門大神們總結(jié)并留下了一些套路和招式,什么降龍十八掌之類的,讓我等晚輩可以通過(guò)日復(fù)一日的刻意練習(xí),去不斷參透心法的真諦,這些套路和招式就是“設(shè)計(jì)模式”。

但只有這十八招顯然是不夠的,于是我們又學(xué)到了一些實(shí)戰(zhàn)指導(dǎo)原則,讓我們以另一種方式,自下而上,跳出招式和套路的限制,甚至能不斷浮現(xiàn)出新的招式,且通向的是同一個(gè)目標(biāo),這些實(shí)戰(zhàn)指導(dǎo)原則就是“簡(jiǎn)單設(shè)計(jì)原則”。

***,不斷操練“重構(gòu)到模式”,通過(guò)實(shí)際運(yùn)用實(shí)戰(zhàn)指導(dǎo)原則和手法,推演招式和套路,幫助我們將這兩種方法融會(huì)貫通,相互結(jié)合,最終領(lǐng)悟那隱藏在一切表象背后的真理,達(dá)到無(wú)招勝有招,草木竹石皆可為劍,心隨意走,人隨心動(dòng)的境界。

【本文是51CTO專欄作者“ThoughtWorks”的原創(chuàng)稿件,微信公眾號(hào):思特沃克,轉(zhuǎn)載請(qǐng)聯(lián)系原作者】

戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來(lái)源: 51CTO專欄
相關(guān)推薦

2018-10-06 21:51:37

代碼SOLID編程

2024-02-20 08:09:51

Java 8DateUtilsDate工具類

2020-07-03 08:11:33

代碼登錄方式

2017-11-30 07:30:27

程序員代碼軟件世界觀

2020-01-06 08:40:42

Windows 10Windows超強(qiáng)模式

2021-06-09 10:10:20

代碼內(nèi)存編程語(yǔ)言

2021-03-24 08:44:11

代碼內(nèi)存消耗語(yǔ)言

2021-02-03 08:24:32

JavaScript技巧經(jīng)驗(yàn)

2023-09-28 11:45:09

泛型類對(duì)象編譯器

2023-11-13 08:49:54

2018-06-29 08:36:50

2020-05-22 13:35:39

Java 開(kāi)發(fā)者代碼

2015-03-27 10:20:41

谷歌地圖谷歌偉大

2020-05-29 14:18:12

Java泛型數(shù)據(jù)

2019-12-04 12:33:48

程序員技術(shù)設(shè)計(jì)

2021-09-11 22:56:58

微信功能技巧

2025-08-01 00:00:00

2020-07-28 15:18:52

Gartner信息安全網(wǎng)絡(luò)安全

2021-05-21 05:24:03

Excel數(shù)據(jù)技巧

2022-04-21 07:52:08

JS線程GUI渲染
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)