1.定義
策略模式(strategy):它定義了演算法家族,分別封裝起來,讓他們之間可以相互替換,此模式讓演算法的變化,不會影響到使用演算法的使用者
2.uml
單一職責原則,就乙個類而言,應該僅有乙個引起它變化的原因。
開放-封閉原則:是說軟體實體(類,模組,函式等)應該可以擴充套件,但是不可修改 \
對於擴充套件是開放的,對於修改是封閉的
依賴倒轉原則:\
1.高層模組不應該依賴低層模組,兩個都應該依賴抽象\
2.抽象不應該依賴細節,細節應該依賴抽象\
黎克特制代換原則:子型別必須能夠替換掉他們的父型別 如:鳥可以飛,企鵝屬於鳥,但企鵝不會飛,所以企鵝不可以繼承鳥類。
**模式(proxy),為其他物件提供一種**以控制對這個物件的訪問\
**模式應用:\
1.遠端**,也就是為乙個物件在不同的位址空間提供區域性代表。這樣可以隱藏乙個物件存在於不同位址空間的事實。\
2.虛擬**,是根據需要建立開銷很大的物件。通過他類存放例項化需要很長時間的真實物件。\
3.安全**,用來控制真實物件訪問時的許可權。|\
4.智慧型指引,是指當呼叫真實的物件時,**處理另外一些事。
工廠方法模式,定義了乙個用於建立物件的藉口,讓子類決定例項化哪乙個類。工廠方法使乙個類的例項化延遲到其子類。\
簡單工廠模式最大的優點在與工廠類中包含了必要的邏輯判斷,根據客戶端的選擇條件動態例項化相關的類,對於客戶端來說,去除了與具體產品的依賴
工廠方法模式實現時,客戶端需要決定例項化哪乙個,工廠實現運算類,選擇判斷的問題還是存在,也就是說工廠方法把簡單工廠的內部邏輯判斷移到了客戶端**來進行,你想加功能,簡單工廠是該工廠類,現在是修改客戶端。
原型模式(prototype) ,用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件\
原型模式其實就是乙個物件再建立另外乙個可定製的物件,而且不需要知道任何建立的細節。
如果欄位是值型別的,則對該字段執行逐位複製,如果欄位是引用型別,則複製引用但不複製引用的物件,因此,原型物件及其複本引用同一物件
抽象工廠模式(abstract factory)提供乙個建立一系列相關或相互依賴物件的介面,而無需指定他們具體的類
介面卡模式(adapter) 將乙個類的介面轉換成客戶希望的另外乙個介面,adapter模式使得原來由於介面不相容而不能在一起工作的那些類可以一起工作\
在雙方都不太容易修改的時候再使用介面卡模式適配。
組合模式(comprosite) 將物件組合成樹形結構以表示『部分-整體』的層次結構。組合模式使得使用者對單個物件和組合物件的使用具有一致性。
設計模式筆記
1 類繼承與介面繼承的比較。物件的類與物件的型別的比較 乙個物件的類定義了物件怎麼樣實現的,同時也定義物件內部狀態和操作的實現。但是物件的型別只與他的介面有關,藉口即物件能響應的請求的集合。乙個物件可以有多個型別,不同的類物件可以有相同的型別。理解類繼承和介面繼承之間的差別也十分重要。類繼承根據乙個...
設計模式筆記
設計模式是一種真理,我們在沒有學習過設計模式時都會或多或少的與他不謀而合,但是學習過後我們可以把他從經驗性的東西提煉為理論性的,並且反過來再指導實踐,這應該就是我們學習並使用設計模式的初衷,這好比是政經中的價值規律,任何人都知道東西如果少了而需求大,它 馬上就漲,而反過來 就賤,可是學過政經後就可以...
設計模式筆記
設計模式精解p136,第11章 專家如何進行設計 alexander提到 從片段開始設計不是乙個好的設計方法。即將預先成型的部分新增在一起是無法得到優秀的軟體設計的。但還是可以得到可以工作的軟體的,只是大部分時候難於修改或擴充套件 我的觀點 軟體或者軟體系統都是由 功能模組 和這些 模組之間的聯絡 ...