Geekband 設計模式 第一周筆記 暗影行者

2021-07-14 17:46:40 字數 1784 閱讀 7778

設計模式主要是一種松耦合設計思想

每一種設計模式,其實是針對某個重複出現的問題,提出的解決方案

在程式設計過程中,向下是底層思維,向上是抽象思維

在程式設計過程中,向下是底層思維,向上是抽象思維

1.底層思維:

語言構造、編譯轉換、記憶體模型、執行時機制
2.抽象思維

物件導向、元件封裝、設計模式、架構模式
對於問題,人們常用兩種解決方法:

1.分解

將問題分解成乙個乙個的步驟

建立乙個類a類b

如果類c需要使用類a的資訊,就包含類a類b作為成員

如果類c需要列印類a的資訊,就在類c中撰寫列印類a類b的函式

2.抽象

由於不能掌握全部的複雜物件,選擇忽視它的非本質細節,而去處理泛化和理想化的模型

類c並不知道需要為哪個類服務,需要它選擇為類a類b的基類服務

類a類b各自實現功能,可以通過虛函式去呼叫

如果類c需要列印類a,就通過虛函式,動態呼叫類a的列印函式;

如果類c需要列印類a,就通過虛函式,動態呼叫類b的列印函式;

軟體設計的目標是:復用

在**不出現變化的時候,設計模式的優勢看不出來,而一旦出現變化,好的設計模式的作用就體現出來了。

物件導向的最大優勢是:抵禦變化

重新認識物件導向:

1、巨集觀角度。隔離變化

2、微觀角度(具體實現角度)。各個部分各司其職,完成各自的功能。

3、物件是什麼?

從語言實現角度,物件就是**和資料的集合

從規格層面,物件是一系列可被使用的公共介面

從概念角度,物件是擁有責任的抽象

物件導向設計模型的8大原則

1.依賴倒置原則(dip)

高層模組(穩定)不應該依賴於低層模組(變化),二者都依賴於抽象(穩定)

抽象(穩定)不應該依賴於實現細節(變化),實現細節應該依賴於抽象(穩定)

穩定不能依賴變化

2.開放封閉原則(ocp)

對擴充套件開放,對更改封閉

類模組應該是可擴充套件的,但不可修改

(對於「變化」,用「增加」去應對)

3.單一職責原則(srp)

乙個類應該僅有乙個引起它變化的原因

(變化的方向隱含類的責任)

4.liskov替換原則(lsp)

子類必須能夠替換它們的基類(反映的是is-a的關係)
5.介面隔離原則(isp)

不應該強迫客戶程式依賴它們不用的方法

介面要小而完備

6.優先使用物件組合,而不是類繼承

類繼承通常是「白箱復用」,物件組合通常為「黑箱復用」

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

而物件組合只要求物件有良好定義的介面

7.封裝變化點

使用封裝來建立物件之間的分界層,讓設計者可以只對一側進行修改,而不影響另外一側
8.針對介面程式設計,而不是針對實現程式設計

不將變數型別宣告為某個特定的具體類,而是宣告為某個介面

客戶程式無需知道物件的具體型別,只需要知道介面

(老師提到,產業強盛的標誌是「介面標準化」)

紙上學來終覺淺,絕知此事要躬行。

設計模式,還需要多體會。

python第一周心得 Python第一周總結

變數 不能為系統自帶的內建函式,如def,help,sum等等 變數不能已下劃線數字來開頭,對大小寫敏感 變數後直接接數字,則被賦值為整型,如何加引號則賦值型別為字串str型別 a 1 整型 int b 2 字串 str 用print 直接輸出 a hello print a 在 使用者想要同時輸出...

第一周周記

下面是整個文章的第二部分,日常的安利 這周的話,除了整體恢復正常,週末我也購置了我的第一塊外接鍵盤,這裡的話我選擇的是國產的靜電容鍵盤niz的plum 87鍵鍵盤。今天拿到這個鍵盤第一天,整體使用了一下,尺寸配合著15寸的蘋果macbook pro可以說恰到好處,除此以外,整個鍵盤還是給我不少驚喜的...

寒假第一周

寫了這個標題,感覺有點像寫周記的味道.那就盡量堅持這個寒假裡至少每週一篇吧。這幾天學校裡真的好清靜了,實驗室和寢室都沒人了。其實說起來這周算是我們寒假的第二週了吧,14號就全部考完了,從放假的基本定義來看,那時候就算是寒假了。只不過上週這邊人還比較多,而且本科生也都沒考完,校歷上也是這週才算開始放假...