Home
R
Cancel

[閱讀筆記][Design Pattern] Ch19.組合模式(Composite)

組合模式(Composite) 組合模式(Composite),將物件組合成樹形結構以表示「部分-整體」的層次結構。組合模式(Composite)使得用戶對單個物件和組合物件的使用具有一致性。 結構 Component 組合中的物件宣告介面,在適當情況下,實現所有類別共有介面的預設行為。宣告一個介面用於使用和管理Component的子部分。 Leaf 在組合中表示葉節點物件,...

[閱讀筆記][Design Pattern] Ch18.備忘錄模式(Memento)

備忘錄模式(Memento) 備忘錄模式(Memento),在不破壞封裝性的前提下,捕獲一個物件的內部狀態,並在該物件之外保存這個狀態。這樣以後就可將該物件恢復到原先保存的狀態。 使用場合? 備忘錄模式(Memento)比較適用於功能比較複雜的,但需要維護或記錄屬性歷史的類別,或者需要保存的屬性只是眾多屬性中的一小部分時,Originator可以根據保存的Memento資訊還原到前一狀...

[閱讀筆記][Design Pattern] Ch17.轉接器模式(Adapter)

轉接器模式(Adapter) 轉接器模式(Adapter),將一個類別的介面轉換成客戶希望的另一個介面。Adapter模式使得原本由於介面不相容而不能一起工作的那些類別可以一起工作。 主要解決什麼? 簡單來說,就是需要的東西就在前面,但卻不能使用,而短時間又無法改造它,於是我們就想辦法轉接它。 在軟體開發中,系統的資料和行為都正確,但介面不符時,我們應該考慮用轉接器模式,目的是使控制範...

[閱讀筆記][Design Pattern] Ch16.狀態模式(State)

狀態模式(State) 狀態模式(State)主要是解決當控物一個物件狀態轉換的條件運算式過於複雜時的情況。把狀態的判斷邏輯移到表示不同狀態的一系列類別當中,可以把複雜的判斷邏輯簡化。 如果這個狀態判斷很簡單,那就沒有必要用「狀態模式」了。 結構 State 抽象狀態類別,定義一個介面以封裝與Context的一個特定狀態相關的行為。 ConcreteState 具體狀態,每一...

[閱讀筆記][Design Pattern] Ch15.抽象工廠模式(Abstract Factory)

資料庫存取 用工廠方法模式 用抽象工廠模式 用簡單工廠來改進抽象工廠 用反射+抽象工廠 用反射+設定檔 設計模式中的工廠模式(Factory Design pattern)是一個比較常用的創建型設計模式,其中可以細分為三種:簡單工廠(Simple Factory)、工廠方法(Factory Method)和抽象工廠(Abstract Factory)。那麼三者有...

[閱讀筆記][Design Pattern] Ch14.觀察者模式(Observer)

觀察者模式(Observer) 觀察者模式(Observer)又叫做「發佈-訂閱(Publish/Subscribe)模式」。 觀察者模式(Observer)定義了一種一對多的依賴關係,讓多個觀察者物件同時監聽某一個主題物件。這個主題物件在狀態發生變化時,會通知所有觀察者物件,使它們能夠自動更新自己。 觀察者的特點與動機 將一個系統分割成一系統相互協作的類別有一個很不好的副作用,那就...

[閱讀筆記][Design Pattern] Ch13.建造者模式(Builder)

建造者模式(Builder) 流程的抽象 如果你需要將一個複雜物件的構造與它的表示分離,使得同樣的構建過程可以建立不同的表示之意圖時,我們需要應用於一個設計模式「建造者模式(Builder)」,又叫「產生器模式」。 建造者模式可以將一個產品的內部表像與產品的產生過程分割開來,從而可以使一個建造過程產生具有不同之內部表象的產品物件。 如果我們用了建造者模式(Builder),那麼用戶就...

[閱讀筆記][Design Pattern] Ch12.外觀模式(Facade)

外觀模式(Facade) 「外觀模式(Facade)」又叫「門面模式」。 即使沒有聽過「外觀模式」,也很有可能常常用,因為它完美地體現了「依賴倒轉原則」和「迪米特法則」的思想 外觀模式(Facade)結構 Fancade外觀類別:知道哪些子系統類負責處理請求,將客戶的請求代理給適當的子系統物件。 SubSystem Classes子系統類別集合:實現子系統的功能,處理Fan...

[閱讀筆記][Design Pattern] Ch11.迪米特法則(LoD)

迪米特法則(LoD, Law of Demeter) 迪米特法則(LoD)也叫「最少知識原則」,如果兩個類別不必彼此直接通信,那麼這兩個類別就不應當發生直接的相互作用。如果其中一個類別需要調用另一個類別的某一個方法的話,可以透過第三者轉發這個調用。 「迪米特法則」首先強調的前提是「在類別的結構設計上,每一個類別都應當儘量降低成員的使許可權」,也就是說,一個類別包裝好自己的private狀...

[閱讀筆記][Design Pattern] Ch10.範本方法模式(Template)

範本方法模式(Template) 當我們要完成某一細節層次一致的一個過程或一系列步驟,但其個別步驟在更詳細的層次上的實現可能不同時,我們通常考慮用「範本方法模式」來處理。 範本方法模式,定義一個操作中的演算法的骨架,而將一些步驟延遲到子類別中。範本方法使得子類別可以不改變一個演算法的結構即可重定義該演算法的某些特定步驟。 範本模式結構 AbstractClass抽象類別:...