第二天 裝飾模式及物件導向設計原則4則

2022-03-12 07:17:22 字數 1325 閱讀 4286

裝飾模式是為已有功能動態地新增更多功能的一種方式.

當系統需要新功能的時候,是向舊系統中新增新的**.這些新加的**通常裝飾了原有類的核心職責或主要行為.這樣的結果等同於

在主類中加入新的字段,新的方法和新的邏輯,從而

增加了主類的複雜度,而這些新加入的東西僅僅是為了滿足一些只在某種特定情況下才會執行的特殊行為的需要.

裝飾模式把每個要裝飾的功能放在單獨的類中,並讓這個類包裝它所要裝飾的物件,因此,當需要執行特殊行為時,客戶**就可以在執行時根據需要有選擇地,按順序地使用裝飾功能包裝物件了.

優點:把類中的裝飾功能從類中搬移去除,這樣可以簡化原有的類.

有效地把類的核心職責和裝飾功能區分開了,而且可以去除相關類中重複的裝飾模式.

物件導向的四個好處:可維護,可擴充套件,可復用,靈活性好

單一職責原則:如果乙個類承擔的職責過多,就等於把這些職責耦合在一起,乙個職責的變化可能會消弱或者抑制這個類完成其他職責的能力.這種耦合會導致脆弱的設計,當變化發生時,設計會遭受到意想不到的破壞。

開放封閉原則是說軟體實體(類,模組,函式等等)應該可以擴充套件,但是不可修改。

模組無法做到絕對封閉,但應在設計過程中,盡量猜測出最有可能發生的變化種類,然後構造抽象來隔離那些變化。

方法:等到變化發生時立即採取行動,在我們最初編寫**時,假設變化不會發生變化。當變化發生時,我們就建立抽象來隔離以後發生的同類變化。

好處:面對需求,對程式的改動是通過增加新**進行的,而不是更改現有的**。

依賴倒置原則:抽象不應該依賴細節,細節應該依賴於抽象(例子:cpu,記憶體,主機板等自己是根據標準介面設計的)

黎克特制替換原則:子型別必須能夠替換掉它們的父型別。

由於子型別的可替換性才使得使用父類型別的模組在無需修改的情況下就可以擴充套件。

程式中所有的依賴關係都是終止於抽象類或者介面,就是物件導向的設計.

應用一則:

資料持久化功能開發:

對此功能應用裝飾模式, 資料->詞彙過濾->加密->持久化(資料庫(sql,oracle)

,檔案)

.綠色標識部分應該考慮使用策略模式,應對加密演算法的改變.

藍色劃線部分應該考慮使用依賴倒置原則,定義公共介面.  持久化模組和使用者依賴公共介面.而互相不知道對方的細節。

雖然,物件導向設計原則已經學習了很多次了,也聽了很多次了,但是仍然每學習一次就多一絲領悟加深一層理解。所謂笨鳥要靠時間積累才能飛,聰明的人也許看過一遍,兩遍就學會了,那麼我就看個八遍,十遍的,哪怕不會靈活運用也要理解精神。

物件導向第二天 物件

一 類的定義 1.對一類事物的抽象 將事物中的相同屬性抽象成文乙個類 同一類事物必須具有相同屬性。2 屬性和資料 如 姓名 劉娜,其中姓為屬性,劉娜為資料 相同屬性的便可看作一類事物,但同一類的不同物件可以具有不同的屬性。比如,劉娜這個物件有個頭髮顏色屬性,但是李江權沒有頭髮,故李江權沒有頭髮顏色這...

設計第二天

鋼材管理之手持終端軟體設計 由於最近在做手持終端專案,所以首先將手持中終端的任務進行!僅供參考!沒找到合適的軟體畫介面,嘿嘿 先手繪了。包括 登入介面,主介面 庫存檢視,計畫入庫,計畫出庫,庫存盤點,庫存移動,系統設定 軟體在出庫時,設計給出出庫所需鋼板的 長,寬,高,型別,船級社 根據 所給資訊,...

Swift學習第二天 物件導向

playground noun a place where people can play import uikit var str hello,playground 類和屬性 class role 成員方法 func playgame string 靜態方法 static func playbol...