1. 程式人生 > >設計模式 狀態模式 策略模式 觀察者模式 命令模式 中介者模式

設計模式 狀態模式 策略模式 觀察者模式 命令模式 中介者模式

設計模式(物件行為型)

一.狀態模式


環境類(Context:  定義客戶感興趣的介面。維護一個ConcreteState子類的例項,這個例項定義當前狀態。抽象狀態類(State:  定義一個介面以封裝與Context的一個特定狀態相關的行為。具體狀態類(ConcreteState每一子類實現一個與Context的一個狀態相關的行為。

作用:允許物件在內部狀態變化時,變更其行為,並修改其類。

二.策略模式


環境類(Context):用一個ConcreteStrategy物件來配置。維護一個對Strategy物件的引用。可定義一個介面來讓Strategy訪問它的資料。抽象策略類(Strategy):

定義所有支援的演算法的公共介面。Context使用這個介面來呼叫某ConcreteStrategy定義的演算法。具體策略類(ConcreteStrategy):Strategy介面實現某具體演算法。

作用:定義一系列演算法,將每個演算法封裝起來,使他們可以互相替換,讓演算法獨立於客戶變化,使用於需要在不同的情況下使用不同的策略

三.觀察者模式


目標(Subject:目標知道它的觀察者。可以有任意多個觀察者觀察同一個目標。提供註冊和刪除觀察者物件的介面。具體目標(ConcreteSubject將有關狀態存入各ConcreteObserver物件。觀察者(Observer): 為那些在目標發生改變時需獲得通知的物件定義一個更新介面。當它的狀態發生改變時

,向它的各個觀察者發出通知。具體觀察者(ConcreteObserver): 維護一個指向ConcreteSubject物件的引用。儲存有關狀態,這些狀態應與目標的狀態保持一致。實現Observer的更新介面以使自身狀態與目標的狀態保持一致。

作用:觀察者模式定義一種一對多的依賴關係,當一個物件的狀態發生改變時,所有依賴於他的物件都得到通知並被自動更新

四.命令模式

 委屈

抽象命令類(Command): 宣告執行操作的介面。呼叫接收者相應的操作,以實現執行的方法Execute

具體命令類(ConcreteCommand): 建立一個具體命令物件並設定它的接收者。通常會持有接收者,並呼叫接收者的功能來完成命令要執行的操作。

呼叫者(Invoker): 要求該命令執行這個請求。通常會持有命令物件,可以持有很多的命令物件。

接收者(Receiver): 知道如何實施與執行一個請求相關的操作。任何類都可能作為一個接收者,只要它能夠實現命令要求實現的相應功能。

客戶類(Client): 建立具體的命令物件,並且設定命令物件的接收者。真正使用命令的客戶端是從Invoker來觸發執行。

作用:將命令請求封裝在物件中,作為引數傳遞,允許系統使用不同的請求把客戶端引數化

五.中介者模式


抽象中介者(Mediator):中介者定義一個介面用於與各同事(Colleague)物件通訊。具體中介者(ConcreteMediator): 具體中介者通過協調各同事物件實現協作行為。瞭解並維護它的各個同事。抽象同事類(Colleagueclass):定義同事類介面,定義各同事的公有方法.具體同事類(ConcreteColleague):實現抽象同事類中的方法。每一個同時類需要知道中介者物件;每個具體同事類只需要瞭解自己的行為,而不需要了解其他同事類的情況。每一個同事物件在需與其他的同事通訊的時候,與它的中介者通訊。

作用:用一箇中介物件來封裝一系列的物件互動。中介者使各物件不需要顯式地相互引用,從而使其耦合鬆散,而且可以獨立地改變它們之間的互動。

六.迭代器模式


抽象迭代器(Iterator): 迭代器定義訪問和遍歷元素的介面。具體迭代器(ConcreteIterator):具體迭代器實現迭代器Iterator介面。對該聚合遍歷時跟蹤當前位置。抽象聚合類(Aggregate):聚合定義建立相應迭代器物件的介面。具體聚合類(ConcreteAggregate): 體聚合實現建立相應迭代器的介面,該操作返回ConcreteIterator的一個適當的例項。

作用:使用迭代器模式來提供對聚合物件的統一存取,即提供一個外部的迭代器來對聚合物件進行訪問和遍歷 , 而又不需暴露該物件的內部結構。


相關推薦

NET Core中使用MediatR實現命令中介模式

tab 添加 www. 執行 重定向 什麽 接下來 ont 修飾 NET Core中使用MediatR實現命令和中介者模式 https://www.cnblogs.com/yilezhu/p/9866068.html 在本文中,我將解釋命令模式,以及如何利用基於命令模式的第

[譯]ASP.NET Core中使用MediatR實現命令中介模式

在本文中,我將解釋命令模式,以及如何利用基於命令模式的第三方庫來實現它們,以及如何在ASP.NET Core中使用它來解決我們的問題並使程式碼簡潔。因此,我們將通過下面的主題來進行相關的講解。 什麼是命令模式? 命令模式的簡單例項以及中介者模式的簡單描述 MVC中的瘦控制器是什麼?我們是如如何實現使控制器

設計模式 狀態模式 策略模式 觀察模式 命令模式 中介模式

設計模式(物件行為型) 一.狀態模式 環境類(Context):  定義客戶感興趣的介面。維護一個ConcreteState子類的例項,這個例項定義當前狀態。抽象狀態類(State):  定義一個介

java設計模式之——策略模式、模板方法模式觀察模式、迭代子模式、責任鏈模式命令模式、備忘錄模式狀態模式、訪問者模式中介模式、直譯器模式(行為型)【讀書筆記】

一、策略模式           定義:定義了演算法家族,分別封裝起來,讓他們之間可以互相替換,此模式讓演算法的變化,不會影響到演算法的客戶。           使用場景:策略模式是一種定義一系列演算法的方法,從概念上看,所有的這些演算法完成的都是相同的工作,只是實現不

初探Java設計模式3:行為型模式策略觀察等)

轉自https://javadoop.com/post/design-pattern行為型模式行為型模式行為型模式關注的是各個類之間的相互作用,將職責劃分清楚,使得我們的程式碼更加地清晰。策略模式策略模式太常用了,所以把它放到最前面進行介紹。它比較簡單,我就不廢話,直接用程式

設計模式學習(二)“觀察模式” (C#)

original pan 學習筆記 pri 接口 program date contain 兩個 《深入淺出設計模式》學習筆記第二章 需求: 開發一套氣象監測應用,如圖: 氣象站,目前有三種裝置,溫度、濕度和氣壓感應裝置。 WeatherData對象追蹤氣象站的數據,並更

【pattern】設計模式(3) - Observer觀察模式

獨立 使用 數據 技術 很多 調用 edi 基於 ace 源碼地址:https://github.com/vergilyn/design-patterns 另外一個大神很全的Github:https://github.com/iluwatar/java-design-pat

23種設計模式(8):觀察模式

println api pri 依次 move 類圖 bject 代碼實現 implement 定義:定義對象間一種一對多的依賴關系,使得當每一個對象改變狀態,則所有依賴於它的對象都會得到通知並自動更新。 類型:行為類模式。 類圖: 在軟件系統中經常會有這樣的需求:如

Java中的設計模式(七):觀察模式

name int 還要 The else 意圖 http exceptio 所有 介紹 觀察者模式是行為設計模式之一。當您對對象的狀態感興趣並希望在有任何更改時收到通知時,觀察者設計模式非常有用。在觀察者模式中,監視另一個對象狀態的對象稱為Observer,正在被監視的對象

路一步步走>> 設計模式十九:Observer-觀察

package com.test.DPs.XingWei.Observer; import java.util.Enumeration; import java.util.Vector; /** * 行為型:Observer-觀察者 外觀:作用面為 物件 */ interface Ob

Java 設計模式(九)《觀察模式

觀察者模式 當物件間存在一對多關係時,則使用觀察者模式(Observer Pattern)。比如,當一個物件被修改時,則會自動通知它的依賴物件。觀察者模式屬於行為型模式。 所屬型別: 行為型 標籤: Java Gang Of Four Difficult

設計模式對比:策略模式狀態模式、橋接模式

《策略模式》與《狀態模式》有相同的類結構圖,與《橋接模式》結構非常相似。 目的不同: 策略模式:策略模式的目的是封裝一系列的演算法,使這些演算法能夠相互替換。 狀態模式:封裝狀態對應的行為,並在內部狀態改變的時候改變物件的行為。 橋接模式:分離抽象部分與實現部分,使得它們可以獨立地變化。 狀態模式與策略模

我與C++設計模式(十五)——觀察模式

毋庸置疑,observer模式的地位是十分重要的,此處省略一些套話,那麼什麼是observer模式,他在幫我們解決什麼問題或者說他在面對什麼情形進行設計的。 observer模式要解決的問題是,建立一個一對多的依賴關係,並且做到當“一”變化的時候,“多”能夠及時作出相應的響

Java設計模式(十五)----觀察模式

觀察者模式 一、定義 二、結構 具體案例 推模型和拉模型 三、Java提供的對觀察者模式的支援 Observer介面 Observable類 一、定義 觀察者模式是物件的行為模式,又叫釋出-訂閱(Publish/Subscribe)模式

Android設計模式(十一)-觀察模式

觀察者模式是一種使用頻率非常高的設計模式,最常用的地方就是訂閱-釋出系統。 這個模式的重要作用就是將觀察者和被觀察者解耦,使他們之間的依賴更小甚至沒有。 定義 定義物件一種一對多的依賴關係,使得每當一個物件改變狀態,則所有依賴於他的物件都會得到通知

Java設計模式-回撥函式和觀察模式

Android的框架中有非常多的地方使用了回撥的模式,例如Activity的生命週期,按鈕的點選事件等。 下面是回撥的基本模型: public class A { private CallBack callback; //註冊一個事件 public void reg

Android設計模式原始碼解析之ListView觀察模式

Android設計模式原始碼解析之觀察者模式 本文為 Android 設計模式原始碼解析 中 觀察者模式 分析 Android系統版本: 2.3 分析者:Mr.Simple,分析狀態:未完成,校對者:Mr.Simple,校對狀態:未開始

設計模式練習(17)——觀察模式

觀察者模式 一、題目: 某公司欲開發一套機房監控系統,如果機房達到一定指定溫度,感測器將作出反應,將訊號傳遞給響應裝置,如警示燈將閃爍,報警器將發出警報,安全逃生門將自動開啟、隔熱門將自動關閉,每一響應裝置的行為右專門的程式來控制,為支援將來引入新型別的響

Head First設計模式:(二)觀察模式

通過具體實現一個氣象監測系統來理解觀察者模式此係統的三個部分是氣象站(獲取實際氣象資料的物理裝置)、WeatherData物件(追蹤來自氣象站的資料,並更新佈告板)和佈告板(顯示目前天氣狀況給使用者看)。 具體來說該應用需要:利用WeatherDate物件從氣象站取得資料,

設計模式:物件去耦(中介觀察

為了嚴格遵循MVC,MVVM等架構模式,經常需要物件去耦。 10、中介者模式:用一個物件來封裝一系列物件的互動方式。中介者使各物件不需要顯示地相互引用,從而使其耦合鬆散,而且可以獨立地改變它們之間的