TODO…
[閱讀筆記][Design Pattern] Ch28.訪問者模式(Visitor)
訪問者模式(Visitor) 訪問者模式(Visitor),表示一個作用於某物件結構中的各元素的操作。它使你可以在不改變各元素之類別的前提下,定義作用於這些元素的新操作。 訪問者模式(Visitor)比較麻煩,訪問者模式(Visitor)的能力和複雜性是把雙刃劍,只有當你真正需要它的時候,才考慮使用它。 事實上,用訪問者模式(Visitor)的機會其實並不太多,因為我們很難找到...
[閱讀筆記][Design Pattern] Ch27.解譯器模式(Interpreter)
解譯器模式(Interpreter) 解譯器模式(Interpreter),給定一個語言,定義它的文法的一種表示,並定義一個解譯器,這個解譯器使用該表示來解譯語言中的句子。 比如,我們常常會在字串中搜尋相符的字元或判斷一個字串是否符合我們規定的格式,此時一般我們會用「正則運算式」技術。 因為比對字元的需求在軟體的很多地方都會使用,而且行為之間都非常類似,過去的做法是針對特定的需求...
[閱讀筆記][Design Pattern] Ch26.享元模式(Flyweight)
享元模式(Flyweight) 享元模式(Flyweight),運用共用技術有效地支援大量細粒度的物件。 結構 FlyweightFactory 一個Flyweight工廠,用來建立並管理Flyweight物件。主要是用來確保合理地共用Flyweight,當用戶請求一個Flyweight時,FlyweightFactory物件提供一個已建立的實例或者建立一個(如果不存在的話)。 ...
[閱讀筆記][Design Pattern] Ch25.仲介者模式(Mediator)
仲介者模式(Mediator) 仲介者模式(Mediator)又叫做調停者模式。其實就是中間人或者調停的意思。 用一個仲介物件來封裝一系列的物件互動。仲介者使各物件間不需要顯式地互相參考,從而使其耦合鬆散,而且可以獨立地改變它們之間的互動。 比如,公司IT部門的管理為例,當新進員工去尋求任何一個不認識的IT部門同事幫忙是有困難的,但如果有個IT主管來協調工作,主管就是一個「仲介者...
[閱讀筆記][Design Pattern] Ch24.職責鏈模式(Chain of Responsibility)
職責鏈模式(Chain of Responsibility) 職責鏈模式(Chain of Responsibility),使多個物件都有機會處理請求,從而避免請良的發送者和接收者之間的耦合關係。將這物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有一個物件處理它為止。 類別有太多的責任,這違背了「單一職責原則(Single Responsibility Principle)」,增加新的...
[閱讀筆記][Design Pattern] Ch23.命令模式(Command)
命令模式(Command) 命令模式(Command),將一個請求封裝為一個物件,讓你可用不同請求對客戶進行參數化;對請求排隊或記錄請求日誌,以及支援可取消的操作。 結構 Command類別:用來宣告執行操作的介面。 ConcreteCommand類別:將一個接收者物件綁定於一個動作,呼叫接收者相應的操作,以實現Excute。 Invoker類別:要求該命令執行這個請求。...
[閱讀筆記][Design Pattern] Ch22.橋接模式(Bridge)
橋接模式(Bridge) 橋接模式(Bridge),將抽象部分與它的實現部分分離,使它們都可以獨立地變化。 兩個抽象類別之間,就像一座橋,有一個聚合線。 什麼叫做抽象與實現分離? 什麼叫做抽象與實現分離,這並不是說,讓抽象類別與其衍生類別分離,因為這沒有任何意義。 實現指是抽象類別和它的衍生類別用來實現自己的物件。 比如,手機可以按照品牌來分類,也可以按照功能來分類: ...
[閱讀筆記][Design Pattern] Ch21.獨體模式(Singleton)
獨體模式(Singleton) 獨體模式(Singleton),保證一個類別僅有一個實體,並提供一個存取它的全域訪問點。 通常我們可以讓一個總體變數使得一個物件被存取,但它不能防止你實體化多個物件。一個最好的方法就是,讓類別自身負責保存它唯一的實體。這個類別可以保證沒有其他實體可以被建立,並且它可以提供一個存取該實體的方法。 實體化其實就是new的過程,如果不對建構式做改動的話,...
[閱讀筆記][Design Pattern] Ch20.迭代器模式(Iterator)
迭代器模式(Iterator) 迭代器模式(Iterator),提供一種方法依序存取一個聚合物件中各個元素,而又不暴露該物件的內部結構。 foreach in就是實現IEnumerator、IEnumerable這兩個介面來實踐迴圈走遍。 .NET的迭代器實現 實際使用當中是不需要這麼麻煩的,因為.NET框架已經為你準備好了相關介面,你只需去實現就好。 IEnumerato...