www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 公眾號(hào)精選 > 程序員小灰
[導(dǎo)讀]前幾天,我給大家介紹了算法和數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)知識(shí)。后來(lái)又有小伙伴私信問(wèn)我:“小灰,你能不能也講一講設(shè)計(jì)模式的相關(guān)知識(shí)?”沒(méi)問(wèn)題!對(duì)于程序員來(lái)說(shuō),設(shè)計(jì)模式也是必須要掌握的一項(xiàng)核心知識(shí),我今天就來(lái)給大家重點(diǎn)講一講。編程的痛點(diǎn)那么,到底什么是設(shè)計(jì)模式呢?在介紹這個(gè)概念之前,我先問(wèn)問(wèn)大家,...

程序員小灰" data-alias="chengxuyuanxiaohui" data-signature="一群喜愛(ài)編程技術(shù)和算法的小倉(cāng)鼠。" data-from="0">前幾天,我給大家介紹了算法和數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)知識(shí)。后來(lái)又有小伙伴私問(wèn)我:“小灰,你能不能也講一講設(shè)計(jì)模式的相關(guān)知識(shí)?”



沒(méi)問(wèn)題!對(duì)于程序員來(lái)說(shuō),設(shè)計(jì)模式也是必須要掌握的一項(xiàng)核心知識(shí),我今天就來(lái)給大家重點(diǎn)講一講。




編程的痛點(diǎn)




那么,到底什么是設(shè)計(jì)模式呢?



在介紹這個(gè)概念之前,我先問(wèn)問(wèn)大家,在你們的工作當(dāng)中,有沒(méi)有接手過(guò)“祖?zhèn)鞔a”?也就是老板讓你維護(hù)前一任程序員寫(xiě)的老項(xiàng)目。



小灰自己做過(guò)10年的程序員,有過(guò)很多次這樣的經(jīng)歷。這些個(gè)祖?zhèn)鞔a,有相當(dāng)一部分壓根兒不知道寫(xiě)的是什么,注釋非常少,結(jié)構(gòu)也很混亂,不敢修改也不敢刪除。







當(dāng)初寫(xiě)下這些代碼的前任,要么已經(jīng)離職了,根本找不到人來(lái)問(wèn)。



就算他還在職,能找到人,想問(wèn)對(duì)方一點(diǎn)代碼的問(wèn)題,也還得看對(duì)方的臉色。



這就是祖?zhèn)鞔a的痛苦。




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



我們?cè)撛趺崔k呢?



許多前輩程序員經(jīng)過(guò)長(zhǎng)期實(shí)踐,總結(jié)出了一系列的解決方案。這些解決方案可以提高代碼的可讀性,增加代碼的可重用性,保證代碼的可擴(kuò)展性。



這一系列解決方案,被人們稱為設(shè)計(jì)模式,它是面向?qū)ο缶幊坍?dāng)中的各種經(jīng)典套路。



設(shè)計(jì)模式是一種抽象的編程思想,并不局限于某一特定的編程語(yǔ)言,而是在許多語(yǔ)言之間相通的。比如在Java、C#、C 語(yǔ)言當(dāng)中,都可以使用到設(shè)計(jì)模式。



但設(shè)計(jì)模式也有它的邊界,它的適用范圍是面向?qū)ο蟮木幊陶Z(yǔ)言。對(duì)于面向過(guò)程語(yǔ)言、函數(shù)式編程語(yǔ)言,談?wù)撛O(shè)計(jì)模式是沒(méi)有意義的。



如果有人跟你說(shuō),F(xiàn)ortran語(yǔ)言當(dāng)中的設(shè)計(jì)模式非常好用,或者說(shuō)自己在學(xué)習(xí)Lisp語(yǔ)言當(dāng)中的設(shè)計(jì)模式,這人一定是一個(gè)假程序員。








設(shè)計(jì)模式的分類



那么,程序員前輩們一共總結(jié)出了多少種設(shè)計(jì)模式呢?



在1995年,有四位編程界的大佬合著了一本書(shū),書(shū)名叫做《Design Patterns: Elements of Reusable Object-Oriented Software》,翻譯過(guò)來(lái)就是《設(shè)計(jì)模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ)》,書(shū)里面總共收錄了23種設(shè)計(jì)模式。



這本書(shū)是軟件研發(fā)領(lǐng)域重要的里程碑,合著此書(shū)的四位作者,被業(yè)內(nèi)稱為GoF(Gang of Four),因此這本書(shū)也被人稱為GoF設(shè)計(jì)模式。



這23種設(shè)計(jì)模式,又可以根據(jù)設(shè)計(jì)的目的,分為大大類型:



第一類:創(chuàng)建型模式



這一類設(shè)計(jì)模式的目的是用于創(chuàng)建對(duì)象。比如大家常用的工廠模式、單例模式,就屬于創(chuàng)建型模式。



第二類:結(jié)構(gòu)型模式



這一類設(shè)計(jì)模式的目的是優(yōu)化不同類、對(duì)象、接口之間的結(jié)構(gòu)關(guān)系。比較常用的代理模式、裝飾者模式,就屬于結(jié)構(gòu)型模式。



第三類:行為型模式



這一類設(shè)計(jì)模式的目的是更好地實(shí)現(xiàn)類與類之間的交互以及算法的執(zhí)行。比如策略模式、觀察者模式,就屬于行為型模式。



下面這張圖,總結(jié)了所有23種設(shè)計(jì)模式的分類,大家可以收藏一下。






可能有的人會(huì)覺(jué)得疑惑:網(wǎng)上有很多程序員總是說(shuō)到24種設(shè)計(jì)模式,你這里怎么只說(shuō)了23種呢?



其實(shí),這兩種說(shuō)法都沒(méi)錯(cuò),24種設(shè)計(jì)模式是在原有23種的基礎(chǔ)上,補(bǔ)充了一個(gè)空對(duì)象模式,它屬于行為型模式。




此外,隨著編程領(lǐng)域的不斷發(fā)展,有很多新的設(shè)計(jì)模式不斷被人提出來(lái),目前人們所用到的設(shè)計(jì)模式其實(shí)遠(yuǎn)遠(yuǎn)不止24種。



比如生產(chǎn)者消費(fèi)者模式,發(fā)布訂閱模式等等,他們都不在24種設(shè)計(jì)模式當(dāng)中,但仍然非常常用。



可能有些做后臺(tái)開(kāi)發(fā)的朋友會(huì)問(wèn)了:我們平時(shí)用到的MVC模式,是不是也屬于設(shè)計(jì)模式呢?




以我個(gè)人的觀點(diǎn),設(shè)計(jì)模式所研究的是類與對(duì)象、接口之間的關(guān)系,解決的是某一個(gè)特定問(wèn)題。



而MVC,研究的是代碼模塊之間的關(guān)系,并且提供的是一攬子解決方案。所以MVC屬于一種架構(gòu),而不是設(shè)計(jì)模式。




如何學(xué)習(xí)設(shè)計(jì)模



那么,我們?cè)趺床拍軐W(xué)好設(shè)計(jì)模式呢?



就像學(xué)習(xí)算法和數(shù)據(jù)結(jié)構(gòu)一樣,我們可以通過(guò)看書(shū)、看網(wǎng)上的視頻課程,來(lái)了解各種設(shè)計(jì)模式的思想和實(shí)現(xiàn)。



入門級(jí)別的書(shū),比較推薦程杰老師的《大話設(shè)計(jì)模式》。



進(jìn)階級(jí)別的書(shū),推薦看看《Head First 設(shè)計(jì)模式》這本書(shū)。



課程的話,推薦極客時(shí)間王爭(zhēng)老師的《設(shè)計(jì)模式之美》,同時(shí)在B站上也有一些比較優(yōu)質(zhì)的設(shè)計(jì)模式課程,我會(huì)把課程鏈接發(fā)到本視頻的置頂回復(fù)當(dāng)中。



與此同時(shí),大家也可以多看看一些經(jīng)典框架的源碼,里面也采用了很多的設(shè)計(jì)模式。比如Java程序員常用的Spring框架,里面就使用了工廠模式、代理模式、單例模式、適配器模式等等。






這樣既能熟悉框架的原理,也能加深對(duì)設(shè)計(jì)模式的理解,可謂是一舉兩得。



大家都是通過(guò)哪些途徑學(xué)習(xí)的設(shè)計(jì)模式?歡迎寫(xiě)在留言區(qū)。



好了,關(guān)于設(shè)計(jì)模式的基本概念,我就給大家介紹到這里。以下是小灰曾經(jīng)分享過(guò)的設(shè)計(jì)模式相關(guān)漫畫(huà),沒(méi)看過(guò)的小伙伴可以看一看:



裝飾器模式


職責(zé)鏈模式


工廠模式


建造者模式


原型模式


代理模式


外觀模式


觀察者模式



此外,最近小灰嘗試走出舒適區(qū),入駐B站開(kāi)始錄制程序員相關(guān)的視頻。歡迎大家關(guān)注小灰的B站號(hào)【我是程序員小灰】,給個(gè)一鍵三連,感謝支持哦~~


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

一般從事互聯(lián)網(wǎng)工作,尤其是軟件類崗位,通常加班現(xiàn)象都是比較嚴(yán)重的。那么,做硬件的就沒(méi)有加班了嗎?

關(guān)鍵字: 互聯(lián)網(wǎng) 程序員 工程師

在大多數(shù)人眼里,程序員是一份高薪職業(yè),即便是剛畢業(yè)出來(lái)找工作的應(yīng)屆生,似乎也能隨隨便便月收入過(guò)萬(wàn)。那么,事實(shí)真是如此嗎?

關(guān)鍵字: 程序員 計(jì)算機(jī)

在現(xiàn)在這個(gè)網(wǎng)絡(luò)時(shí)代,程序員在日益辛苦地工作,他們總是喜歡學(xué)習(xí)、嘗試新事物,求知欲望相當(dāng)強(qiáng),以最低調(diào)、踏實(shí)、核心的功能模塊搭建起這個(gè)科技世界。那么,本期的老黃歷就帶大家一起來(lái)看看關(guān)于1024程序員節(jié)的由來(lái)。

關(guān)鍵字: 1024 程序員 科技世界

華為各年齡結(jié)構(gòu)分布比例一覽!

關(guān)鍵字: 華為 程序員 互聯(lián)網(wǎng)

(全球TMT2022年8月15日訊)為全面和深入地了解中國(guó)開(kāi)發(fā)者群體整體現(xiàn)狀、應(yīng)用開(kāi)發(fā)技術(shù)以及開(kāi)發(fā)工具、平臺(tái)的狀況和發(fā)展趨勢(shì),CSDN發(fā)布《2021-2022 中國(guó)開(kāi)發(fā)者調(diào)查報(bào)告》,調(diào)研萬(wàn)名開(kāi)發(fā)者,圍繞開(kāi)源開(kāi)發(fā)者畫(huà)像、...

關(guān)鍵字: 開(kāi)發(fā)者 BSP 操作系統(tǒng) 程序員

北京2022年5月17日 /美通社/ -- 程序員作為互聯(lián)網(wǎng)技術(shù)的關(guān)鍵支撐力量,是攜帶互聯(lián)網(wǎng)基因的靈魂人物。互聯(lián)網(wǎng)大廠程序員自帶高光,一度成為就業(yè)市場(chǎng)上的香餑餑。在疫情的影響和互聯(lián)網(wǎng)泡沫逐漸被稀釋的情況下,以大廠為代表的...

關(guān)鍵字: 程序員 通信 大數(shù)據(jù) 聯(lián)網(wǎng)技術(shù)

(全球TMT2022年5月17日訊)程序員作為互聯(lián)網(wǎng)技術(shù)的關(guān)鍵支撐力量,是攜帶互聯(lián)網(wǎng)基因的靈魂人物?;ヂ?lián)網(wǎng)大廠程序員自帶高光,一度成為就業(yè)市場(chǎng)上的香餑餑。在疫情的影響和互聯(lián)網(wǎng)泡沫逐漸被稀釋的情況下,以大廠為代表的互聯(lián)網(wǎng)...

關(guān)鍵字: 程序員 通信 大數(shù)據(jù) 聯(lián)網(wǎng)技術(shù)

最近有一條關(guān)于程序員刪代碼跑路的新聞登上了微博熱搜。

關(guān)鍵字: 程序員 互聯(lián)網(wǎng)

  上海2022年5月11日 /美通社/ --《中國(guó)居民膳食指南(2022)》顯示,目前我國(guó)超過(guò)半數(shù)成年居民存在超重或肥胖現(xiàn)象。996、加班、熬夜...在高強(qiáng)度工作的壓力下,如何避免"過(guò)勞肥&quo...

關(guān)鍵字: 網(wǎng)絡(luò) HP 程序員 醫(yī)療服務(wù)

程序員小灰

379 篇文章

關(guān)注

發(fā)布文章

編輯精選

技術(shù)子站

關(guān)閉