原型模式 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)
物件導向的程式設計,並不是類別越多越好,類別的劃分是為了封裝,但分類的基礎是抽象,具有相同屬性和功能之物件的抽象集合才是類別。 商場收銀-簡單工廠實現 「簡單工廠模式」只是解決物件的建立問題,而且由於工廠本身包括了所有的收費方式,商場可以經常性地更改打折額度和紅利額,每次維護或增加收費方式,都要改動這個工廠,以致程式碼需要重新編譯部署,這真的是很糟糕的處理方式,所以用它不是...
[閱讀筆記][Design Pattern] Ch1. 簡單工廠模式
簡單工廠模式(Simple Factory Pattern) 物件導向 可維護 可複用 可擴充 靈活性好 透過封裝、繼承、多型把程式的耦合性降低。 程式設計有一個原則:就是用盡可能的辦法去避免重複。 業務的封裝 讓「業務邏輯」與「介面邏輯」分開,讓它們之間的耦合度下降。 計算機為例 分一個類別出來,讓計算和顯示分開。(但這還談不上完全物件導向) //用戶...
[閱讀筆記][Design Pattern] 物件導向基礎
1. 類別與實體 什麼是物件? 一切事物皆為物件 所有的東西都是物件 物件就是:可以看到、感覺到、聽到、觸摸到、嚐到、或聞到的東西 物件是一個獨立自主的實體,用一組可識別的特性和行為來標示 什麼是類別? 類別就是:具有相同之屬性和功能的物件的抽象集合 class Cat { public string Shout() { return...