程式設計師內功心法《設計模式》

CSDN學院發表於2020-05-11

靈魂三問
 

第一問, 什麼是設計模式?
設計模式是在軟體工程實踐過程中,JAVA使用者們總結出的良好的程式設計方法,使用設計模式能夠增加系統的健壯性,易修改性和可擴充套件性,當你進行開發的軟體規模比較大的時候,良好的設計模式會給程式設計帶來便利,讓系統更加穩定。

 

第二問,為什麼要學習設計模式?
普遍的目的:

1、別人都說要學,別人都說好,所以我要學

2、面試會被問,所以必須學

3、讀原始碼時看到別人在用,不學看不懂原始碼為什麼這樣寫

4、我剛好看到一套設計模式的視訊,嗯老師講的不錯,我想學學

為什麼大部分的碼農成為不了架構師?

https://t.csdnimg.cn/gzex

最終的目的:

1、寫出高質量的程式碼,做出高可用的穩定的以擴充套件系統,秒殺搬磚程式碼。

2、設計模式,是架構之路的基礎,不懂設計模式的人,很難成為架構師。

3、提升自身價值,不管是做開發還是設計,掌握設計模式,都能夠凸顯自己的技術水平。

4、升值加薪

 

第三問:學完設計模式對我有什麼好處?
設計模式之於物件導向系統的設計和開發的作用就猶如資料結構之於程式導向開發的作用一般,可以說,不會設計模式的編碼人員不能稱之為工程師。

 

設計模式原則:
 

一、單一職責原則:
一個類,只有一個引起它變化的原因。應該只有一個職責。每一個職責都是變化的一個軸線,如果一個類有一個以上的職責,這些職責就耦合在了一起。這會導致脆弱的設計。當一個職責發生變化時,可能會影響其它的職責。另外,多個職責耦合在一起,會影響複用性。例如:要實現邏輯和介面的分離。

 

二、開閉原則:
開閉原則就是說對擴充套件開放,對修改關閉。在程式需要進行擴充的時候,不能去修改原有的程式碼,實現一個熱插拔的效果。所以一句話概括就是:為了使程式的擴充套件性好,易於維護和升級。想要達到這樣的效果,我們需要使用介面和抽象類,後面的具體設計中我們會提到這點。

5個月系統教學,對標阿里P6+大綱,這份資料查收下~:

https://t.csdnimg.cn/gzex

三、里氏替換原則:
里氏代換原則(Lisko
v Substitution Principle LSP)物件導向設計的基本原則之一。里氏代換原則中說,任何基類可以出現的地方,子類一定可以出現。LSP是繼承複用的基石,只有當衍生類可以替換掉基類,軟體單位的功能不受到影響時,基類才能真正被複用,而衍生類也能夠在基類的基礎上增加新的行為。里氏代換原則是對“開-閉”原則的補充。實現“開-閉”原則的關鍵步驟就是抽象化。而基類與子類的繼承關係就是抽象化的具體實現,所以里氏代換原則是對實現抽象化的具體步驟的規範。

 

四、依賴倒置原則:
所謂依賴倒置原則(Dependence Inversion Principle)就是要依賴於抽象,不要依賴於具體。簡單的說就是要求對抽象進行程式設計,不要對實現進行程式設計,這樣就降低了客戶與實現模組間的耦合。實現開閉原則的關鍵是抽象化,並且從抽象化匯出具體化實現,如果說開閉原則是物件導向設計的目標的話,那麼依賴倒轉原則就是物件導向設計的主要手段。

領取設計模式的資料
請掃描下方二維碼
新增CSDN官方客服小姐姐
備註“CSDN”小姐姐才能更快新增您為好友哦

在這裡插入圖片描述

 

五、介面隔離原則:
這個原則的意思是:使用多個隔離的介面,比使用單個介面要好。還是一個降低類之間的耦合度的意思,從這兒我們看出,其實設計模式就是一個軟體的設計思想,從大型軟體架構出發,為了升級和維護方便。所以上文中多次出現:降低依賴,降低耦合。

 

六、合成複用原則:
合成複用原則就是指在一個新的物件裡通過關聯關係(包括組合關係和聚合關係)來使用一些已有的物件,使之成為新物件的一部分;新物件通過委派呼叫已有物件的方法達到複用其已有功能的目的。簡言之:要儘量使用組合/聚合關係,少用繼承。

 

七、迪米特法則:
為什麼叫最少知道原則,就是說:一個實體應當儘量少的與其他實體之間發生相互作用,使得系統功能模組相對獨立。也就是說一個軟體實體應當儘可能少的與其他實體發生相互作用。這樣,當一個模組修改時,就會盡量少的影響其他的模組,擴充套件會相對容易,這是對軟體實體之間通訊的限制,它要求限制軟體實體之間通訊的寬度和深度

 

設計模式彙總

從普通JAVA程式設計師到阿里P6架構師,他用了5個月
https://t.csdnimg.cn/gzex

一、什麼是建立型模式?
在軟體工程中,建立型模式是處理物件建立的設計模式,試圖根據實際情況使用合適的方式建立物件。基本的物件建立方式可能會導致設計上的問題,或增加設計的複雜度。建立型模式通過以某種方式控制物件的建立來解決問題。

 

建立型模式由兩個主導思想構成。

一是將系統使用的具體類封裝起來

二是隱藏這些具體類的例項建立和結合的方式。      

領取設計模式的資料
請掃描下方二維碼
新增CSDN官方客服小姐姐
備註“CSDN”小姐姐才能更快新增您為好友哦

在這裡插入圖片描述

建立型模式又分為物件建立型模式和類建立型模式。物件建立型模式處理物件的建立,類建立型模式處理類的建立。詳細地說,物件建立型模式把物件建立的一部分推遲到另一個物件中,而類建立型模式將它物件的建立推遲到子類中。

 

它主要包括6種設計模式:【簡單工廠模式】、【工廠模式】、【抽象工廠模式】、【單例模式】、【建造者模式】、【原型模式】。

 

二、什麼是結構型模型?
結構型模式涉及到如何組合類和物件以獲得更大的結構。結構型模式採用繼承機制來組合介面或實現。結構型物件模式不是對介面和實現進行組合,而是描述瞭如何對一些物件進行組合,從而實現新功能的一些方法。因為可以在執行時刻改變物件組合關係,所以物件組合方式具有更大的靈活性。

它主要包括7種設計模式:【介面卡模式】、【橋接模式】、【組合模式】、【裝飾者模式】、【外觀模式】、【享元模式】、【代理模式】。

 

三、什麼是行為型模型?
行為型模式主要是用於描述類或者物件是怎樣互動和怎樣分配職責的。它涉及到演算法和物件間的職責分配,不僅描述物件或者類的模式,還描述了他們之間的通訊方式,它將你的注意力從控制流轉移到了物件間的關係上來。行為型類模式採用繼承機制在類間分派行為,而行為型物件模式使用物件複合而不是繼承。

它主要包括如何11種設計模式:【職責鏈模式】、【命令模式】、【直譯器模式】、【迭代器模式】、【中介者模式】、【備忘錄模式】、【觀察者模式】、【狀態模式】、【策略模式】、【模板方法模式】、【訪問者模式】。


領取設計模式的資料
請掃描下方二維碼
新增CSDN官方客服小姐姐
備註“CSDN”小姐姐才能更快新增您為好友哦

在這裡插入圖片描述

相關文章