国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

“設(shè)計(jì)模式已死”,這不是你所了解的設(shè)計(jì)模式

譯文 精選
開(kāi)發(fā) 前端
“設(shè)計(jì)模式”這個(gè)術(shù)語(yǔ)已然成了“面向?qū)ο蟮脑O(shè)計(jì)模式”的代名詞,所以當(dāng)你遇到“設(shè)計(jì)模式已死”的這種奇怪說(shuō)法時(shí)不要感到震驚。在這篇文章中,我們將重新聲明下什么是設(shè)計(jì)模式,這有助于我們?cè)谟懻摶蚴褂媚撤N設(shè)計(jì)模式時(shí),能使我們確定我們究竟在談?wù)摶蚴褂玫氖鞘裁础?/div>

譯者 | 胥磊

審校 | 孫淑娟

軟件行業(yè)中幾乎在每個(gè)公司,我們都會(huì)聽(tīng)到一些話題的討論,我相信關(guān)于設(shè)計(jì)模式的爭(zhēng)論絕對(duì)是其中之一。你甚至可以找到無(wú)數(shù)的帖子、文章或者Quora和Stackoverflow上的問(wèn)題的問(wèn)答無(wú)不是在爭(zhēng)論設(shè)計(jì)模式,前些天我就看到了Quora上一個(gè)很古老的問(wèn)題:“為什么現(xiàn)在程序員很少談及設(shè)計(jì)模式?哪些模式(如果有的話)依然還有價(jià)值?”顯然提問(wèn)者所說(shuō)的設(shè)計(jì)模式是面向?qū)ο蟮脑O(shè)計(jì)模式,更確切的說(shuō)是GoF書(shū)中介紹的那23種設(shè)計(jì)模式,當(dāng)然大多數(shù)回答問(wèn)題的人也都是這么認(rèn)為的。

“設(shè)計(jì)模式”這個(gè)術(shù)語(yǔ)已然成了“面向?qū)ο蟮脑O(shè)計(jì)模式”的代名詞,所以當(dāng)你遇到“設(shè)計(jì)模式已死”的這種奇怪說(shuō)法時(shí)不要感到震驚。在這篇文章中,我們將重新聲明下什么是設(shè)計(jì)模式,這有助于我們?cè)谟懻摶蚴褂媚撤N設(shè)計(jì)模式時(shí),能使我們確定我們究竟在談?wù)摶蚴褂玫氖鞘裁础?/p>

1、設(shè)計(jì)模式對(duì)你意味著什么?

讓我們拋開(kāi)所有的書(shū)面上的定義和解釋?zhuān)?dāng)提到設(shè)計(jì)模式這個(gè)概念時(shí)你首先想到的是什么?一個(gè)不該被打破的規(guī)則?或是一個(gè)字斟句酌的學(xué)術(shù)建議?亦或是又一個(gè)的設(shè)計(jì)約束?還是說(shuō)一個(gè)你只需要知道就能通過(guò)求職面試的法寶?

對(duì)我來(lái)說(shuō),設(shè)計(jì)模式就像我腦海中的喃喃警語(yǔ),時(shí)刻提醒我不要重復(fù)造車(chē)輪。你可能有過(guò)類(lèi)似的沖動(dòng),當(dāng)遇到一個(gè)問(wèn)題后就想立即找出應(yīng)對(duì)的解決方案,并開(kāi)始設(shè)計(jì)/編寫(xiě)程序——如果是這樣的話,那么你也是一個(gè)重復(fù)造車(chē)輪的人。設(shè)想一下如果已經(jīng)有一個(gè)現(xiàn)成的解決方案,你再去創(chuàng)造一個(gè)到頭來(lái)只是浪費(fèi)了不必要的時(shí)間和精力。盡管這種沖動(dòng)可能會(huì)隨著時(shí)間的推移而有所克制,但要完全克服這種沖動(dòng)情緒,我相信設(shè)計(jì)模式就是“良藥”之一。

許多軟件工程師應(yīng)該都碰到過(guò)一個(gè)相似的問(wèn)題,因?yàn)槟承┰蚨家阅撤N特定的方式解決了它。上述情況同時(shí)也提醒了我,這背后可能隱藏了一個(gè)道理,啟示我們要從不同角度去看待問(wèn)題,即使我們很少這么干。讓我們看一下GoF的書(shū)中介紹的一段:

“我們都知道設(shè)計(jì)經(jīng)驗(yàn)的價(jià)值,但你又有過(guò)多少次那種“似曾相識(shí)”的感覺(jué)的經(jīng)歷——那種你曾經(jīng)解決過(guò)類(lèi)似問(wèn)題,但卻不知道在哪以及如何解決的感覺(jué)?如果你能記住以前問(wèn)題的細(xì)節(jié)以及解決的方法,那么你就可以重新使用這種經(jīng)驗(yàn),而不是再次去找解決問(wèn)題的方案”。

或多或少我們都有過(guò)類(lèi)似的經(jīng)歷:當(dāng)我們無(wú)法記住之前的解決方案時(shí),就會(huì)出現(xiàn)反復(fù)去解決同一個(gè)常見(jiàn)的設(shè)計(jì)問(wèn)題的情況。設(shè)計(jì)模式就是重用解決方案去解決反復(fù)出現(xiàn)的問(wèn)題,從而節(jié)省了我們的時(shí)間和精力,可以轉(zhuǎn)而去做其他事情。現(xiàn)在,讓我們深入探討一些模式的基本概念和定義。

2、模式意味著什么?

什么是模式?模式的概念并不是軟件行業(yè)所特有的,其他學(xué)科和行業(yè)如建筑學(xué)、經(jīng)濟(jì)學(xué)等同樣適用。讓我們來(lái)看下建筑學(xué)界權(quán)威人士克里斯托弗-亞歷山大對(duì)模式的定義:

“每種模式都是一個(gè)由三部分組成的規(guī)則,它描述了某種背景、問(wèn)題和解決方案之間的關(guān)系。”(Alexander, 1979)“每個(gè)模式都描述了一個(gè)在我們的環(huán)境中反復(fù)出現(xiàn)的問(wèn)題,然后描述了解決這個(gè)問(wèn)題的核心。通過(guò)這種方式,你就可以無(wú)數(shù)次地使用這個(gè)解決方案,而不是用同樣的方式做多次。”(Alexander, 1977)

現(xiàn)在讓我們看看模式在軟件行業(yè)的意義。“軟件架構(gòu)的設(shè)計(jì)模式描述了在特定的設(shè)計(jì)環(huán)境中反復(fù)出現(xiàn)的特定的設(shè)計(jì)問(wèn)題,并為其提供了一套可行的通用方案。解決方案是通過(guò)描述其組成部件、它們之間責(zé)任和關(guān)系以及協(xié)作方式來(lái)指定的。”(BMRSS, 96)

基于上述定義,我們可以將模式視為背景、問(wèn)題和解決方案三者之間的有機(jī)結(jié)合。它是一個(gè)寬泛的概念,可以應(yīng)用于不同的規(guī)模和抽象層次,從設(shè)計(jì)整個(gè)軟件系統(tǒng)到解決特定編程語(yǔ)言的設(shè)計(jì)問(wèn)題都可以應(yīng)用。

3、不同的模式類(lèi)別

模式是根據(jù)其規(guī)模和抽象程度來(lái)分類(lèi)的:

(1)架構(gòu)模式

(2)設(shè)計(jì)模式

(3)習(xí)語(yǔ)

圖片

架構(gòu)模式關(guān)注的是整個(gè)軟件系統(tǒng)的架構(gòu),它的子系統(tǒng),不同的大組件,以及它們的結(jié)合方式。這種模式是一種高層級(jí)的抽象,并不關(guān)心編程語(yǔ)言是什么,也不關(guān)心使用的是什么框架。

“架構(gòu)模式描述了軟件系統(tǒng)的基本結(jié)構(gòu)的組織模式。它提供了一套預(yù)定義的子系統(tǒng),并規(guī)定了它們的責(zé)任,其中包括組織它們之間關(guān)系的規(guī)則和指導(dǎo)手冊(cè)”。(BMRSS, 96)

另一方面,我們?cè)谧畹偷某橄髮哟紊弦灿幸恍┠J剑Q(chēng)之為習(xí)語(yǔ),它涉及到設(shè)計(jì)和實(shí)現(xiàn)。習(xí)語(yǔ)是針對(duì)特定語(yǔ)言的,也就是說(shuō)A語(yǔ)言中的習(xí)語(yǔ)在B語(yǔ)言中是不相干的。“習(xí)語(yǔ)是一種針對(duì)特定編程語(yǔ)言的低級(jí)模式。習(xí)語(yǔ)描述了如何使用給定語(yǔ)言的特性來(lái)實(shí)現(xiàn)特定方面的組件或組件之間的關(guān)系”。(BMRSS, 96)。在上述那些規(guī)模和抽象水平的模式之間,還有一些其他的模式,那就是設(shè)計(jì)模式。

4、設(shè)計(jì)模式的近距離觀察

讓我們回顧一下設(shè)計(jì)模式的定義:“設(shè)計(jì)模式為完善軟件系統(tǒng)的子系統(tǒng)或組件,以及它們之間的關(guān)系而提供的一個(gè)方案。它描述了一個(gè)相互通信的組件的常見(jiàn)結(jié)構(gòu),用以解決特定的環(huán)境中常見(jiàn)的設(shè)計(jì)問(wèn)題”。(BMRSS, 96) 。設(shè)計(jì)模式屬于中等規(guī)模,這意味著它們既不像架構(gòu)模式那樣高度抽象,也不像習(xí)語(yǔ)那樣與編程語(yǔ)言耦合。使用設(shè)計(jì)模式并不影響軟件系統(tǒng)的架構(gòu),但它會(huì)影響子系統(tǒng)的結(jié)構(gòu)及其較小的組件。

現(xiàn)在讓我們來(lái)討論下面這句話(摘自同一參考文獻(xiàn)),其中包含了關(guān)于設(shè)計(jì)模式的一個(gè)重要事實(shí)。“它們往往獨(dú)立于某種特定的編程語(yǔ)言或編程范式”。(BMRSS, 96) 。根據(jù)之前在文章中談到的模式類(lèi)別,我們重新表述一下:“它們獨(dú)立于一種特定的編程語(yǔ)言,但往往(不總是)依賴于一種編程范式。”這句話的第一部分很清楚:如果一個(gè)模式依賴于特定的編程語(yǔ)言,那么它就屬于習(xí)語(yǔ)的范疇。關(guān)于第二部分,設(shè)計(jì)模式是為解決編程范式中出現(xiàn)的常見(jiàn)問(wèn)題而做出的嘗試。它們很可能是對(duì)范式的缺陷的應(yīng)對(duì)。例如GoF書(shū)中描述的23種面向?qū)ο蟮脑O(shè)計(jì)模式,其中大部分都不是函數(shù)式編程范式中的關(guān)注點(diǎn)。反過(guò)來(lái)也一樣,因?yàn)樵O(shè)計(jì)模式都有不同的背景。正如你在下圖中看到的,不同的范式可以共享設(shè)計(jì)模式,但我們不打算討論這個(gè)話題,因?yàn)樗隽吮疚牡姆秶?/p>

圖片

5、一個(gè)著名觀點(diǎn)的分析

記住前面的章節(jié),讓我們快速瀏覽一下當(dāng)你簡(jiǎn)單地用谷歌搜索設(shè)計(jì)模式時(shí)可能遇到的觀點(diǎn):函數(shù)式編程語(yǔ)言不需要設(shè)計(jì)模式。你可以在這里找到答案,顯然這種說(shuō)法是錯(cuò)誤的,因?yàn)樗凳驹O(shè)計(jì)模式只屬于面向?qū)ο蠓妒健TO(shè)計(jì)模式是一個(gè)在函數(shù)式編程范式和面向?qū)ο缶幊谭妒街卸伎梢源嬖诘母拍睿O(shè)計(jì)模式是針對(duì)各種范式的問(wèn)題和需求而設(shè)計(jì)的。函數(shù)式編程范式同樣有專(zhuān)門(mén)針對(duì)其背景的設(shè)計(jì)模式。此外,正如我們?cè)谇皫坠?jié)所討論的,不同的范式有不同的背景,因此就會(huì)遇到不同的問(wèn)題,我們不應(yīng)該指望范式B的設(shè)計(jì)模式來(lái)解決范式A的問(wèn)題。

6、快速回顧

設(shè)計(jì)模式與其他模式類(lèi)型類(lèi)似,試圖解決一個(gè)特定環(huán)境中反復(fù)出現(xiàn)的問(wèn)題。

(1)它們是獨(dú)立于語(yǔ)言的,但大多是跟范式耦合。

(2)作為中等規(guī)模,它們不像架構(gòu)模式那樣抽象。

(3)它們的應(yīng)用并不影響軟件系統(tǒng)的基本架構(gòu),但會(huì)影響子系統(tǒng)的架構(gòu)。

(4)最后但也同樣重要的是,它們是(所有類(lèi)型的模式)防止我們重復(fù)造輪的手段。

在我看來(lái)設(shè)計(jì)模式并不是約束我們?cè)O(shè)計(jì)的嚴(yán)格規(guī)則。它們既不是固定的,也不是無(wú)懈可擊的,因?yàn)樗鼈兛梢赃M(jìn)化,可以變得完善,甚至可以消逝,但模式的概念仍然存在。遵循模式就像是一種思維方式,幫助我們找出可能更好的解決方案。

原文鏈接:https://dzone.com/articles/a-seemingly-simple-question-what-are-design-patter

譯者介紹

胥磊,51CTO社區(qū)編輯,某頭部電商技術(shù)副總監(jiān),關(guān)注Java后端開(kāi)發(fā),技術(shù)管理,架構(gòu)優(yōu)化,分布式開(kāi)發(fā)等領(lǐng)域。

責(zé)任編輯:武曉燕 來(lái)源: 51CTO技術(shù)棧
相關(guān)推薦

2009-11-18 13:20:07

PHP設(shè)計(jì)模式

2025-05-12 07:43:14

SpringMVC設(shè)計(jì)模式代碼

2016-04-29 19:53:15

2015-02-09 10:00:38

谷歌衛(wèi)星互聯(lián)網(wǎng)

2019-03-21 04:47:20

口令網(wǎng)絡(luò)安全數(shù)據(jù)泄露

2023-09-26 00:27:07

設(shè)計(jì)模式鏈接

2021-02-01 10:01:58

設(shè)計(jì)模式 Java單例模式

2016-12-07 07:17:11

云計(jì)算科技新聞早報(bào)

2010-04-01 10:44:14

MySQL

2023-10-07 00:14:53

2022-05-09 08:04:50

工廠模式設(shè)計(jì)模式

2023-11-02 21:11:11

JavaScript設(shè)計(jì)模式

2021-04-19 21:25:48

設(shè)計(jì)模式到元

2019-04-23 10:30:23

機(jī)器學(xué)習(xí)人工智能計(jì)算機(jī)

2020-04-23 11:03:09

前端語(yǔ)言開(kāi)發(fā)

2021-03-03 16:01:48

Web設(shè)計(jì)模式

2018-10-07 06:30:40

代碼設(shè)計(jì)模式面向?qū)ο笤瓌t

2023-10-07 00:17:06

AirDrop中介者模式

2020-10-23 09:40:26

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

2023-04-10 09:20:13

設(shè)計(jì)模式訪客模式
點(diǎn)贊
收藏

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

曰本三级在线| 不卡一卡二卡三乱码免费网站| av在线不卡一区| 日韩国产欧美在线视频| 欧美一区三区三区高中清蜜桃| 欧美丝袜第一区| 精品免费99久久| 在线人体午夜视频| 国产精品一国产精品| 免费在线观看黄| 91视频成人免费| 亚洲一区二区三区在线观看视频 | 亚洲美女久久| 国产精品白丝久久av网站| 亚洲综合欧美| 日韩女优视频免费观看| 亚洲永久精品大片| 日韩视频一区二区三区在线播放| 性xx色xx综合久久久xx| 麻豆91精品视频| 日韩欧美中文字幕在线播放| 亚洲美女久久| 国产精品主播直播| 亚洲黄一区二区三区| 91精品国产福利| 97免费视频在线播放| 日韩电影在线观看网站| 成人免费毛片aaaaa**| 成人午夜视频免费看| xvideos亚洲| 成人免费看片网址| 懂色av中文一区二区三区天美| 91.com视频| 日韩在线视频二区| 懂色av一区二区三区| 97netav| 神马香蕉久久| 免费在线国产精品| 精品一区视频| 欧美日韩国产精选| 精品国产1区2区3区| 日本大片免费看| 国产精品无码久久久久| 中文字幕 久热精品 视频在线| 男男视频亚洲欧美| 国产午夜久久久久| 日韩一区二区在线看片| 成人天堂入口网站| 粉嫩绯色av一区二区在线观看| 麻豆av福利av久久av| 欧美丝袜激情| 国产在线视频一区二区三区| 国产精品一二三视频| 你懂的网址一区二区三区| 日韩欧美一区二区三区免费观看| 懂色av一区二区三区免费看| 久久影院资源网| av手机免费在线观看| 日日噜噜噜夜夜爽亚洲精品| 不卡的av中国片| 亚洲一区二区三区激情| 第一页在线观看| 亚洲裸体xxxx| 国产极品精品在线观看| 99精品国产99久久久久久福利| 国产欧美自拍视频| 在线不卡一区| 国产成人精品免高潮在线观看 | 中文字幕日本在线| 一区二区在线视频| 欧美日韩在线网站| 中文字幕av日韩精品| 亚洲美女视频一区| 中文字幕高清在线播放| 国产精品白嫩初高中害羞小美女| 亚洲一区二区伦理| 一级片在线视频| 亚洲国产综合在线| 写真福利片hd在线观看| 欧美日韩亚洲综合一区二区三区| 国产亚洲精品久久| 久久精品视频在线播放| 国产精品一区二区三区精品| 亚洲欧美日韩精品一区二区| 中文字幕一精品亚洲无线一区| 四虎成人在线| 五月激情久久| 亚洲国产一区自拍| 五月婷婷导航| 中文av字幕一区| av电影在线观看| 96av麻豆蜜桃一区二区| 91地址最新发布| 日韩高清一区在线| 精品剧情v国产在线观看| 日韩大陆欧美高清视频区| 日韩激情在线| 国产成人短视频| 国产91精品一区二区| 国产午夜精品视频| 中文日韩在线| 在线国产日本| 国内揄拍国内精品| 国产mv日韩mv欧美| 国产传媒在线观看| 国精产品99永久一区一区| 亚洲手机成人高清视频| 欧美激情三区| 一二三在线视频| 欧美一区二区三区在线看| 日韩激情图片| 少妇**av毛片在线看| 国内精品久久久久伊人av | h无码动漫在线观看| 欧美一级欧美三级在线观看| 中文不卡在线| 在线观看视频污| 国产精品视频一| 亚洲私人黄色宅男| 久久中文资源| 精品久久久噜噜噜噜久久图片| 日韩精品极品毛片系列视频| 亚洲在线日韩| 性xxxxfjsxxxxx欧美| 日韩欧美中文字幕公布| 色综合五月天| 国产精品久久久久久精| 国内精品久久久久久影视8| 久久久精品人体av艺术| 视频在线国产| 久久久久久久久久av| 亚洲裸色大胆大尺寸艺术写真| 六月丁香婷婷在线| 亚洲一区二区高清| 丝袜连裤袜欧美激情日韩| 国产肥臀一区二区福利视频| 社区色欧美激情 | 久久久综合视频| 国产精品sss在线观看av| 国产伦精品一区二区三区精品视频| 日本一区二区三区四区| 中文在线综合| 电影天堂久久| 91传媒视频在线观看| 制服丝袜中文字幕亚洲| 蜜臀91精品一区二区三区| 神马久久资源| 亚洲成人天堂网| 成人黄色大片在线免费观看| 九一久久久久久| 户外露出一区二区三区| 777久久久精品一区二区三区| 欧美贵妇videos办公室| 亚洲另类一区二区| 午夜精品久久| 精品国产乱码久久久久久浪潮| 国产精品99在线观看| 美州a亚洲一视本频v色道| 日韩欧美色电影| 麻豆精品国产传媒mv男同| 日本在线精品| avlululu| 狠狠色噜噜狠狠色综合久| 欧美xxxx老人做受| 91伊人久久大香线蕉| 欧美日韩中文字幕一区二区三区 | 国产精品伦理一区二区| 超碰免费在线播放| 99精品一区二区三区的区别| 操人视频在线观看欧美| 亚洲专区一二三| 亚洲精品免费观看| 成人满18在线观看网站免费| 国产精品丝袜一区二区三区| 欧美高清视频www夜色资源网| 久久97超碰国产精品超碰| 99国产精品久久一区二区三区| 中文字幕大看焦在线看| 亚洲午夜精品一区二区| 91国偷自产一区二区三区的观看方式 | 老司机午夜在线视频| 中文字幕在线中文| 国产极品精品在线观看| 日韩精品一区二区三区四区视频| 久久久蜜桃精品| 亚洲国内精品| 日韩精品免费视频一区二区三区| 国产精品视频免费一区| 亚洲精品视频在线观看视频| 亚洲欧美日韩在线不卡| 日韩精品高清不卡| 一道在线中文一区二区三区| a级片免费在线观看| 国产农村av| 超薄肉色丝袜足j调教99| 91在线观看免费高清完整版在线观看| 亚洲毛片在线观看| 精品视频一区三区九区| 日韩一区欧美小说| 国产成人久久精品77777最新版本|