原則:
物件導向程式設計,培養物件導向思想。ddd,設計模式是物件導向的左右手。
物件是人類的正常思維方式,它是表示具體東西或抽象的事物,它有單一的職責和統一的行為。(比如想到乙個長方形的周長或面積,不能應當就想到對應的周長或面積,而是應當先想到長方形對應的是乙個物件,它有對應的屬性,長和寬,然後有對應的行為周長或面積還可以對應的相應的增長)
「優先使用物件組合,而不是繼承」。
isp介面分離原則。比如比如會報警的門alarmdoor不能只實現乙個有open,close,alarm三個行為的介面,根據isp原則不能把它們門各報警的介面混為一堂,不能讓alarm模組的變化引起了door這個不同行為模組的變化,因此要把它們分離。分成二個不同的介面乙個是door介面, 乙個是alarm介面。
繼承表示的是(is-a)關係,介面實現表示的是擁有(like-a)的關係。比如會報警的門alarmdoor因為它本質上是門,擁有報警的功能,所以就應當這麼實現class alarmdoor extends door implements alam;是乙個(is-a)用繼承表示;有乙個(has-a)用組合表示。
「對擴充套件開放,對修改關閉」開-閉原則。
solid:物件導向設計的五項原則 (是srp單一職責原則、ocp開閉原則、lsp李式代換原則、isp依賴反轉原則和 dip介面分離原則,首字元的縮寫)
設計模式:
二個階段的學習
1.熟記多少種的設計模式,格式規範,最普通,最經典的用法。
2.什麼場合用,這是關鍵。
以下是為什麼用此模式的解釋:
一、state狀態模式
狀態不同引起的行為的不一致。狀態模式中, 乙個狀態對應乙個狀態子類, 每個狀態子類實現父類提供的行為, 外界在建立狀態引用類的同時,在引用類內部根據初始的引數值建立 對應的狀態類,狀態引用類和狀態類本身是一體的,是強耦合關係,狀態類的建立和初始化由狀態引用類來管理是完全合理的,所在外部呼叫時只是呼叫一狀態引用類的介面,它不關心狀態引用類的內部實現,不去關心狀態類的建立和切換。
二、strategy策略模式
選擇不同的演算法但引起的結局一樣。
策略模式裡,是為了實現某個行為而採取的不同策略,採取何種何種策略由外部條件決定。
與狀態模式區別:狀態模式是隨著狀態的變化,做同樣的行為,但結果是不一樣的(如:銀行不同級別信用卡使用者,可以透支的金額是不一致的);策略模式是指做同樣的行為,產生同樣的結果,但選擇的策略、實現方式是不一致的(如用不同的方式上傳,用不同的演算法壓縮檔案,用不同的圖形方式展示相同的資料變化)。其實它們本來就是不一樣的運用場景,本沒有什麼可比性。
三、builder模式
builder模式用於建立複雜物件。建立方式和元件建立的分離。(比如車子的組裝,包括方向盤,輪子,發動機)
五、介面卡模式adapter
先有二個相似的介面,為了把二個介面整理成同乙個介面,而需要用到介面卡模式。
六、brigde模式
有二個(或多個)變化角色的不同組合實現m*n個物件,為了不用m*n個子類而是通過為m+n個類動態組合來實現,需要用到橋模式。
七、proxy模式
只對原有介面進行了少許的改變和控制。這時需要用到proxy模式(經典的許可權控制)
OO設計模式學習筆記
學習設計模式,首先要了解設計原則 學設計模式,就像學唱歌,先模仿名人,再活學活用,把別人的經驗變成自己的,然後創造自己的經驗模式 學習設計模式,是學習其他開發人員的智慧型和經驗,使用設計模式,可以更好的做到 復用 不用把設計模式都背熟,但是一定要在腦子裡有乙份設計模式的目錄,在設計時,知道什麼時候要...
設計模式 oo基礎 原則及模式
裝飾者模式 動態的將責任加在物件上。工廠方法模式 定義建立物件的介面,由子類決定具體例項化的類是哪乙個。注 工廠方法和抽象工廠的區別 工廠方法使用的是繼承,抽象工廠使用的是組合。抽象工廠中每乙個建立介面都可使用工廠方法模式。單例模式 確保乙個類只有乙個例項,並提供乙個全域性訪問點。命令模式 將請求封...
OO設計模式 工廠方法模式
最近在看oo設計模式,覺得設計模式還是挺有用的。現在只是對設計模式的諸多特性進行記錄,呵呵,這不是我的發明,算是對學習的筆記吧。以後會見gof23種設計模式逐一進行記錄和分析,廢話少說,先說工廠方法模式 1 理解 b 將物件的具體建立過程剝離,客戶端無需知道物件是怎麼建立的,b 只需要使用物件。封裝...