程式設計師內功心法《設計模式》
靈魂三問
第一問, 什麼是設計模式?
設計模式是在軟體工程實踐過程中,JAVA使用者們總結出的良好的程式設計方法,使用設計模式能夠增加系統的健壯性,易修改性和可擴充套件性,當你進行開發的軟體規模比較大的時候,良好的設計模式會給程式設計帶來便利,讓系統更加穩定。
第二問,為什麼要學習設計模式?
普遍的目的:
1、別人都說要學,別人都說好,所以我要學
2、面試會被問,所以必須學
3、讀原始碼時看到別人在用,不學看不懂原始碼為什麼這樣寫
4、我剛好看到一套設計模式的視訊,嗯老師講的不錯,我想學學
為什麼大部分的碼農成為不了架構師?
https://t.csdnimg.cn/gzex
最終的目的:
1、寫出高質量的程式碼,做出高可用的穩定的以擴充套件系統,秒殺搬磚程式碼。
2、設計模式,是架構之路的基礎,不懂設計模式的人,很難成為架構師。
3、提升自身價值,不管是做開發還是設計,掌握設計模式,都能夠凸顯自己的技術水平。
4、升值加薪
第三問:學完設計模式對我有什麼好處?
設計模式之於物件導向系統的設計和開發的作用就猶如資料結構之於程式導向開發的作用一般,可以說,不會設計模式的編碼人員不能稱之為工程師。
設計模式原則:
一、單一職責原則:
一個類,只有一個引起它變化的原因。應該只有一個職責。每一個職責都是變化的一個軸線,如果一個類有一個以上的職責,這些職責就耦合在了一起。這會導致脆弱的設計。當一個職責發生變化時,可能會影響其它的職責。另外,多個職責耦合在一起,會影響複用性。例如:要實現邏輯和介面的分離。
二、開閉原則:
開閉原則就是說對擴充套件開放,對修改關閉。在程式需要進行擴充的時候,不能去修改原有的程式碼,實現一個熱插拔的效果。所以一句話概括就是:為了使程式的擴充套件性好,易於維護和升級。想要達到這樣的效果,我們需要使用介面和抽象類,後面的具體設計中我們會提到這點。
5個月系統教學,對標阿里P6+大綱,這份資料查收下~:
https://t.csdnimg.cn/gzex
三、里氏替換原則:
里氏代換原則(Liskov Substitution Principle LSP)物件導向設計的基本原則之一。里氏代換原則中說,任何基類可以出現的地方,子類一定可以出現。LSP是繼承複用的基石,只有當衍生類可以替換掉基類,軟體單位的功能不受到影響時,基類才能真正被複用,而衍生類也能夠在基類的基礎上增加新的行為。里氏代換原則是對“開-閉”原則的補充。實現“開-閉”原則的關鍵步驟就是抽象化。而基類與子類的繼承關係就是抽象化的具體實現,所以里氏代換原則是對實現抽象化的具體步驟的規範。
四、依賴倒置原則:
所謂依賴倒置原則(Dependence Inversion Principle)就是要依賴於抽象,不要依賴於具體。簡單的說就是要求對抽象進行程式設計,不要對實現進行程式設計,這樣就降低了客戶與實現模組間的耦合。實現開閉原則的關鍵是抽象化,並且從抽象化匯出具體化實現,如果說開閉原則是物件導向設計的目標的話,那麼依賴倒轉原則就是物件導向設計的主要手段。
領取設計模式的資料
請掃描下方二維碼
新增CSDN官方客服小姐姐
備註“CSDN”小姐姐才能更快新增您為好友哦
五、介面隔離原則:
這個原則的意思是:使用多個隔離的介面,比使用單個介面要好。還是一個降低類之間的耦合度的意思,從這兒我們看出,其實設計模式就是一個軟體的設計思想,從大型軟體架構出發,為了升級和維護方便。所以上文中多次出現:降低依賴,降低耦合。
六、合成複用原則:
合成複用原則就是指在一個新的物件裡通過關聯關係(包括組合關係和聚合關係)來使用一些已有的物件,使之成為新物件的一部分;新物件通過委派呼叫已有物件的方法達到複用其已有功能的目的。簡言之:要儘量使用組合/聚合關係,少用繼承。
七、迪米特法則:
為什麼叫最少知道原則,就是說:一個實體應當儘量少的與其他實體之間發生相互作用,使得系統功能模組相對獨立。也就是說一個軟體實體應當儘可能少的與其他實體發生相互作用。這樣,當一個模組修改時,就會盡量少的影響其他的模組,擴充套件會相對容易,這是對軟體實體之間通訊的限制,它要求限制軟體實體之間通訊的寬度和深度
設計模式彙總
從普通JAVA程式設計師到阿里P6架構師,他用了5個月
https://t.csdnimg.cn/gzex
一、什麼是建立型模式?
在軟體工程中,建立型模式是處理物件建立的設計模式,試圖根據實際情況使用合適的方式建立物件。基本的物件建立方式可能會導致設計上的問題,或增加設計的複雜度。建立型模式通過以某種方式控制物件的建立來解決問題。
建立型模式由兩個主導思想構成。
一是將系統使用的具體類封裝起來
二是隱藏這些具體類的例項建立和結合的方式。
領取設計模式的資料
請掃描下方二維碼
新增CSDN官方客服小姐姐
備註“CSDN”小姐姐才能更快新增您為好友哦
建立型模式又分為物件建立型模式和類建立型模式。物件建立型模式處理物件的建立,類建立型模式處理類的建立。詳細地說,物件建立型模式把物件建立的一部分推遲到另一個物件中,而類建立型模式將它物件的建立推遲到子類中。
它主要包括6種設計模式:【簡單工廠模式】、【工廠模式】、【抽象工廠模式】、【單例模式】、【建造者模式】、【原型模式】。
二、什麼是結構型模型?
結構型模式涉及到如何組合類和物件以獲得更大的結構。結構型模式採用繼承機制來組合介面或實現。結構型物件模式不是對介面和實現進行組合,而是描述瞭如何對一些物件進行組合,從而實現新功能的一些方法。因為可以在執行時刻改變物件組合關係,所以物件組合方式具有更大的靈活性。
它主要包括7種設計模式:【介面卡模式】、【橋接模式】、【組合模式】、【裝飾者模式】、【外觀模式】、【享元模式】、【代理模式】。
三、什麼是行為型模型?
行為型模式主要是用於描述類或者物件是怎樣互動和怎樣分配職責的。它涉及到演算法和物件間的職責分配,不僅描述物件或者類的模式,還描述了他們之間的通訊方式,它將你的注意力從控制流轉移到了物件間的關係上來。行為型類模式採用繼承機制在類間分派行為,而行為型物件模式使用物件複合而不是繼承。
它主要包括如何11種設計模式:【職責鏈模式】、【命令模式】、【直譯器模式】、【迭代器模式】、【中介者模式】、【備忘錄模式】、【觀察者模式】、【狀態模式】、【策略模式】、【模板方法模式】、【訪問者模式】。
領取設計模式的資料
請掃描下方二維碼
新增CSDN官方客服小姐姐
備註“CSDN”小姐姐才能更快新增您為好友哦
相關文章
- Java內功心法,建立型設計模式包括哪些Java設計模式
- 02. 程式設計核心內功心法之泛型程式設計泛型
- 初級Java程式設計師和Java架構師的區別:內功心法修煉圖Java程式設計師架構
- 程式設計師內功修煉之資料結構程式設計師資料結構
- 程式設計師的內功修煉——值得看的9本書程式設計師
- 好程式設計師分享java設計模式之享元模式程式設計師Java設計模式
- 好程式設計師精講 java設計模式—享元模式程式設計師Java設計模式
- 兩萬字長文50+張趣圖帶你領悟網路程式設計的內功心法程式設計
- 好程式設計師Java教程分享Java之設計模式程式設計師Java設計模式
- 程式設計師的那些反模式程式設計師模式
- 內推go/php程式設計師GoPHP程式設計師
- 程式設計師何苦為難程式設計師?程式設計師
- 【計算機內功心法】十:執行緒間到底共享了哪些程式資源計算機執行緒
- 程式設計模式-表驅動程式設計程式設計設計模式
- 單例模式 | 程式設計師都想要探索的 Javascript 設計模單例模式程式設計師JavaScript
- 設計模式--原型模式及其程式設計思想設計模式原型程式設計
- 美女程式設計師觀點:程式設計師最重要的非程式設計技巧程式設計師
- 好程式設計師:Java程式設計師面試秘籍程式設計師Java面試
- 以前的程式設計師,現在的程式設計師程式設計師
- 十、GO程式設計模式 : 泛型程式設計Go程式設計設計模式泛型
- 拯救祭天的程式設計師——事件溯源模式程式設計師事件模式
- 【1024程式設計師節】程式設計師,你學程式設計的初衷是什麼?程式設計師
- 五行合一,微服務執行態建設的“內功心法”微服務
- 淺談程式設計師的“內卷化”程式設計師
- 普通程式設計師和厲害程式設計師的差距!程式設計師
- 程式設計師,請你不要在坑程式設計師了?程式設計師
- 程式設計師程式設計入門一定知道!程式設計師需要學什麼?程式設計師
- 設計模式之面向切面程式設計AOP設計模式程式設計
- 為什麼國外的程式設計師薪資是國內程式設計師薪資的四五倍,國外程式設計師技術都比國內高嗎?程式設計師
- Python程式設計:探索有趣的程式碼設計模式Python程式設計設計模式
- 韭菜程式設計師程式設計師
- Java內功心法,Set集合的詳解Java
- 一個老程式設計師的程式設計之路,寫給年輕的程式設計師們程式設計師
- Java程式設計師學習Rust程式設計 - infoworldJava程式設計師Rust
- 程式設計師如何獲取新程式設計技能程式設計師
- 幽默:程式設計師成功完成程式設計的眼睛程式設計師
- 設計模式與前端工程師設計模式前端工程師
- 女程式設計師,為什麼比男程式設計師少???程式設計師