Home
R
Cancel

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

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

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

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

[閱讀筆記][Design Pattern] Ch9.原型模式 Prototype (深淺複製 MemberwiseClone())

原型模式 Prototype 原型模式(Prototype):用原型實例指定建立物的種類,並且透過拷貝這些原型建立新的物件。 「原型模式(Prototype)」其實就是從一個物件再建立另一個可訂製的物件且不需要知道任何建立的細節。 原型模式(Prototype)結構 Client用戶端:讓一個原型複製自身,從而建立一個新的物件 Prototype 原型類別:聲明一個複製自身的...

[閱讀筆記][Design Pattern] Ch8.工廠方法模式 Factory Method

工廠方法模式 Factory Method 工廠方法模式 (Factory Method):定義一個用於建立物件的介面,讓子類決定實體化哪一個類別。工廠方法使一個類別的實例化延遲到其子類別。 優點 由於使用了多型性,工廠方法模式保持了簡單工廠模式的優點。 缺點 缺點是:由於每加一個產品,就需要加一個產品工廠的類別,增加了額外的開發量。 怎樣才能避免修改用戶端的程式碼?利用「反射...

[閱讀筆記][Design Pattern] Ch7.代理模式 Proxy

代理模式 Proxy 代理模式(Proxy):為其他物件提供一種代理以控制對這個物件的存取。 代理模式其實就是在存取物件時引入一定程度的間接性,因為這種間接性,可以附加多種用途。 說白了,代理就是真實物件的代表。 代理模式 Proxys結構 Subject 類別:定義了RealSubject和Proxy共用介面,這樣就在任何使用RealSubject的地方都可以使用Pro...

[閱讀筆記][Design Pattern] Ch6.裝飾模式 Decorator

裝飾模式 Decorator 裝飾模式 Decorator:動態地給一個物件加入一些額外的職責,就增加功能來說,裝飾模式比產生子類別更為靈活。 裝飾模式 Decorator結構 Component 定義一個物件介面,可以給這些物件動態地加入職責 + Operation() ConcreteComponent 定義了一個具體的物件,也可以給這個物件加入一些職責 + Oper...

[閱讀筆記][Design Pattern] Ch5.依賴倒轉原則 Dependency Inversion Principle (DIP)

依賴倒轉原則 Dependency Inversion Principle (DIP) 「依賴倒轉原則」也有翻譯成「依賴倒置原則」。 高層模組不應該依賴於低層模組。兩個都應該依賴抽象。 抽象不應該依賴細節,細節應該依賴於抽象。 原話解釋是「抽象不應該依賴細節,細節應該依賴於抽象」。 說白了,就是要針對「介面」程式設計,不要對「實現」程式設計。 依賴倒轉其實可以說是物件導向...

[閱讀筆記][Design Pattern] Ch4. 開放封閉原則 Open-Closed Principle (OCP)

開放-封閉原則 The Open-Closed Principle (OCP) 「開放-封閉原則」:是說軟體實體(類別、模組、函數……)應該可以擴展,但是不可以修改。 即面對需求,對程式的改動是透過增加新程式碼進行的,而不是更改現有的程式碼。這就是「開放-封閉原則」的精神所在。 計算機程式範例 Operation 運算類別 + NumberA:decimal + NumberB...

[閱讀筆記][Design Pattern] Ch3. 單一職責原則(Single Responsibility Principle)

單一職責原則 就一個類別而言,應該僅有一個引起它變化的原因。 定義:Each class in your system should have only one responsibility.

[閱讀筆記][Design Pattern] Ch2. 商場促銷-策略模式(Strategy)

物件導向的程式設計,並不是類別越多越好,類別的劃分是為了封裝,但分類的基礎是抽象,具有相同屬性和功能之物件的抽象集合才是類別。 商場收銀-簡單工廠實現 「簡單工廠模式」只是解決物件的建立問題,而且由於工廠本身包括了所有的收費方式,商場可以經常性地更改打折額度和紅利額,每次維護或增加收費方式,都要改動這個工廠,以致程式碼需要重新編譯部署,這真的是很糟糕的處理方式,所以用它不是...