GeekBand 設(shè)計模式 筆記&心得 第一周(1)設(shè)計原則

1.什么是設(shè)計模式?

在我的理解中設(shè)計模式是一種抽象設(shè)計的方法(面向?qū)ο?,組件分裝,設(shè)計模式,架構(gòu)模式)。

說說這幾種的不同之處。這幾種抽象方法是由小至大,由內(nèi)至外,由細節(jié)至整體的。

面向?qū)ο蟾嗟氖钦Z法上的抽象,通過繼承(復(fù)用現(xiàn)有代碼),封裝(隱藏內(nèi)部實現(xiàn)),多態(tài)(改寫對象行為),模板等特性將程序中功能相似或者實現(xiàn)目標相似的這一類東西包裝成一個整體,一個對象稱之為面向?qū)ο缶幊獭?/p>

而組件封裝是讓不同對象各司其職,從而達到松耦合。

設(shè)計模式是將解決某一類常常碰到的問題最好的解決方案、設(shè)計經(jīng)驗的總結(jié)。

而架構(gòu)模式則是對一整個項目的架構(gòu)做出最好的解決方法。

這些事情的核心就是復(fù)用代碼,從復(fù)雜的代碼中抽象出最好的、不變的方法套用到其他的程序中,大大降低了程序需求變化所付出的代價(將代價減為最?。夥帕松a(chǎn)力。

2.面向?qū)ο笤O(shè)計原則(重要)

1.依賴倒置原則(DIP)

1.高層模塊(穩(wěn)定)不應(yīng)該依賴于底層模塊(變化),二者都應(yīng)該依賴于抽象

2.抽象(穩(wěn)定)不應(yīng)該依賴于實現(xiàn)細節(jié)(變化),實現(xiàn)細節(jié)應(yīng)該依賴于抽象(穩(wěn)定)

簡單來說就是變化的要依賴穩(wěn)定的,實現(xiàn)細節(jié)要依賴高層的(聲明抽象調(diào)用)。這樣子當程序需求改變使我們只需要在特定的某個模塊(實現(xiàn)細節(jié)的模塊)更改代碼,而不需要在許多的文件中都要更改代碼(這樣做的話一定是高層依賴于細節(jié)了,要更改設(shè)計模式甚至重構(gòu)代碼)。

2.開放封閉原則

1.對擴張開放,對更改封閉

2.類模塊應(yīng)該是可擴展的,但是不可修改

這一點仔細想想就是對上一點的另一種表述,高層模塊應(yīng)該是穩(wěn)定的(封閉不可修改的),而擴張是開放的,可擴展的(可以想為實現(xiàn)細節(jié),像繼承和派生)

3.單一職業(yè)原則(SRP)

1.一個類應(yīng)該僅有一個引起它變化的原因

2.變化的方向隱含類的責任

每個類應(yīng)該只能完成一個具體的功能,做一種單一的job。這樣使得這個類在需要維護時更加簡便。

4.Liskov替換原則(LSP)

1.子類必須能夠替換他們的基類(IS-A)

2.繼承表達類型抽象

子類方法要是父類方法拓展中的一種

子類可以擴展父類的功能,但不能改變父類原有的功能

子類可以實現(xiàn)父類的抽象方法,但不能覆蓋父類的非抽象方法。

子類中可以增加自己特有的方法。

當子類的方法重載父類的方法時,方法的前置條件(即方法的形參)要比父類方法的輸入?yún)?shù)更寬松。

當子類的方法實現(xiàn)父類的抽象方法時,方法的后置條件(即方法的返回值)要比父類更嚴格。

5.接口隔離原則(ISP)

1.不應(yīng)該強迫客戶程序依賴它們不用的方法

2.接口應(yīng)該小而完備

一種接口只做一件事。

6.優(yōu)先使用對象組合,而不是類繼承

1.類繼承通常為“白箱服用”,對象組合通常為黑箱復(fù)用

2.繼承在某種程序上破壞了封裝性,子類父類耦合度高

3.而在對象組合則只要求被組合的對象具有良好的定義的接口,耦合度低

7.分裝變化點

1.使用封裝來創(chuàng)建對象之間的分界層,讓設(shè)計者可以在分界層的一側(cè)進行修改,而不會對另一側(cè)產(chǎn)生不良的影響,從而實現(xiàn)層次間的松耦合

8.針對接口編程,而不是針對實現(xiàn)編程

1.不降變量類型聲明為某個特定的具體類,而是聲明為某個接口

2.客戶程序無需獲知對象的具體類型,只需要知道對象所具有的接口

3.減少系統(tǒng)中各部分的依賴關(guān)系,從而實現(xiàn)“高內(nèi)聚,松耦合”的類型設(shè)計方案

上面三點不做補充說明了,說得很明白了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 設(shè)計模式基本原則 開放-封閉原則(OCP),是說軟件實體(類、模塊、函數(shù)等等)應(yīng)該可以拓展,但是不可修改。開-閉原...
    西山薄涼閱讀 4,071評論 3 14
  • 設(shè)計模式匯總 一、基礎(chǔ)知識 1. 設(shè)計模式概述 定義:設(shè)計模式(Design Pattern)是一套被反復(fù)使用、多...
    MinoyJet閱讀 4,075評論 1 15
  • 設(shè)計模式六大原則 設(shè)計模式六大原則(1):單一職責原則 定義:不要存在多于一個導(dǎo)致類變更的原因。通俗的說,即一個類...
    viva158閱讀 821評論 0 1
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,627評論 18 399
  • 寶寶睡覺愛偏頭 圓圓的腦袋變扁頭 麻麻們該行動起來了 讓寶寶睡的香 不偏頭 神器在這里 pigeon成立于1957...
    來福饞閱讀 731評論 0 0

友情鏈接更多精彩內(nèi)容