設計模式特性說明
【生成模式】
在軟體工程中,是處理物件創建機制的設計模式。此類型模式試圖根據適合的情況來決定建立物件。
單純的物件創建常會導致一些設計問題或增加設計的複雜度。
創建型模式則藉由控制物件的生成方式來解決這問題。
- 獨體: 讓一個 class 只能有一個 instance。
- 建立者:在設計多目標,多樣的彈性系統時,或目標樣式尚未決定時使用之。
- 委派:宣告有一件事情要做,但是這件事情誰做、怎麼做,由呼叫端和邏輯端處理
- 原型:在設計者無法預期以後會有何種物件,且未來維護者可能無能力或無法加入新的物件到物件管理程式之中時。
【結構模式】
藉由一以貫之的方式來了解元件間的關係,以簡化設計。- 外觀:為在系統太複雜的時候,作為整合之用。
- 代理人:物件因為存取時間太長,或重複存取次數太多,或有可能根本不會存取到時使用。
- 組合:對於結構複雜的物件,但介面一致的物件使用之。
- 橋樑:在設計前用來隔開 user , user interface, object interface 與 implementation。將抽象與實現解耦,以便兩者可以獨立的變化。
- 享元:許多物件都會包含同一物件許多次的時候使用之。
- 轉接器:將某個類的介面轉換成客戶端期望的另一個介面表示。適配器模式可以消除由於介面不匹配所造成的類兼容性問題。
- 裝飾者:要附加功能又不用破壞原來的架構的情況下。
【行為模式】
用來識別對象之間的常用交流模式並加以實現。如此,可在進行這些交流活動時增強彈性。- 參觀者:封裝一些施加於某種資料結構元素之上的操作。 一旦這些操作需要修改,接受這個操作的資料結構可以保持不變。 訪問者模式適用於資料結構相對未定的系統,它把資料結構和作用於結構上的操作之間的耦合解脫開,使得操作集合可以相對自由的演化。
- 策略:定義一個演算法的系列,將其各個分裝,並且使他們有交互性。 策略模式使得演算法在用戶使用的時候能獨立的改變。
- 迭代器:提供一種方法順序訪問一個聚合對象中各個元素, 而又不需暴露該對象的內部表示。
- 翻譯者:給定一個語言, 定義它的文法的一種表示,並定義一個解釋器, 該解釋器使用該表示來解釋語言中的句子。
- 樣板:模板方法模式準備一個抽象類,將部分邏輯以具體方法及具體構造子類的形式實現, 然後聲明一些抽象方法來迫使子類實現剩餘的邏輯。 不同的子類可以以不同的方式實現這些抽象方法,從而對剩餘的邏輯有不同的實現。 先構建一個頂級邏輯框架,而將邏輯的細節留給具體的子類去實現。
- 觀察者:在對象間定義一個一對多的聯繫性,由此當一個對象改變了狀態, 所有其他相關的對象會被通知並且自動刷新。
- 中介者:包裝了一系列對象相互作用的方式,使得這些對象不必相互明顯作用,從而使它們可以鬆散偶合。 當某些對象之間的作用發生改變時,不會立即影響其他的一些對象之間的作用,保證這些作用可以彼此獨立的變化。
- 命令:將一個請求封裝為一個對象,從而使你可用不同的請求對客戶進行參數化; 對請求排隊或記錄請求日誌,以及支持可取消的操作。
- 責任鏈:為解除請求的發送者和接收者之間耦合,而使多個對象都有機會處理這個請求。將這些對象連成一條鏈,並沿著這條鏈傳遞該請求,直到有一個對象處理它。
- 備忘錄:備忘錄對象是一個用來存儲另外一個對象內部狀態的快照的對象。備忘錄模式的用意是在不破壞封裝的條件下,將一個對象的狀態捉住,並外部化,存儲起來,從而可以在將來合適的時候把這個對象還原到存儲起來的狀態。
- 狀態:讓一個對象在其內部狀態改變的時候,其行為也隨之改變。狀態模式需要對每一個系統可能取得的狀態創立一個狀態類的子類。當系統的狀態變化時,系統便改變所選的子類。
REF:筆記
留言
張貼留言