1. 程式人生 > >【設計模式】狀態模式和職責鏈的對比

【設計模式】狀態模式和職責鏈的對比

          先簡單的看一下兩個設計模式的官方解釋

        Chain ofResponsibility(CoR)模式也叫職責鏈模式或者職責連鎖模式,是行為模式之一,該模式構造一系列分別擔當不同的職責的類的物件來共同完成一個任務,這些類的物件之間像鏈條一樣緊密相連,所以被稱作職責鏈模式。

        State模式也叫狀態模式,是行為設計模式的一種。State模式允許通過改變物件的內部狀態而改變物件的行為,這個物件表現得就好像修改了它的類一樣。 

        接下來,對比的看一下

          

         個人理解:

        在完成功能上來說,其實狀態模式和職責鏈模式是差不多的。我同樣可以在狀態模式中每個具體的狀態類中加入額外的處理方法。在使用的過程中如果我們的處理過程是固定的就可以使用狀態模式將處理過程寫死。如果處理過程是動態的,我們就要考慮職責鏈模式了.使用狀態模式,我們也不需要知道過程,而職責鏈需要知道所有的處理過程,並且進行相應的設定.

        以上就是目前我對這兩個設計模式的理解.我覺得以後會有不一樣的理解.

相關推薦

設計模式狀態模式職責對比

          先簡單的看一下兩個設計模式的官方解釋         Chain ofResponsibility(CoR)模式也叫職責鏈模式或者職責連鎖模式,是行為模式之一,該模式構造一系列分別

Unity與23種設計模式狀態模式(State)

unity public text 開始 sys 狀態模式 改變 val 繼承 定義: “讓一個對象的行為隨著內部狀態的改變而變化,而該對象也像是換了類一樣” 應用場景: 角色AI:控制角色在不同狀態下的AI行為 服務器連接狀態:開始連線、連線中、斷線等狀態 關卡進

C++設計模式狀態模式

#ifndef __STATE_H__ #define __STATE_H__ #include <iostream> #include <string> //狀態模式:允許

設計模式狀態模式

模式定義 狀態模式允許物件在內部狀態改變時改變它的行為,物件看起來好像修改了它的類。 下圖是該模式的類圖: 一個生動的例子 就是一個自動售賣機,投硬幣—>搖桿—>出東西。 一共有這麼幾個狀態:無硬幣狀態、有硬幣狀態、無貨狀態和出貨狀態。 下面是程式碼:

一起學設計模式狀態模式+裝飾器模式+簡單工廠模式實戰:(一)提交個訂單我到底經歷了什麼鬼?

前言 之前在我的部落格(一枝花算不算浪漫)中已經更新過兩篇設計模式相關的內容 【一起學設計模式】策略模式實戰一:基於訊息傳送的策略模式實戰 【一起學習設計模式】策略模式實戰二:配合註解 幹掉業務程式碼中冗餘的if else... 【一起學設計模式】訪問者模式實戰:許可權管理樹刪節點操作 【一起學設計模式】命

Android UI狀態toolbar顏色一致

1、在style.xml中定義toolbar的顏色 <resources> <!-- Base application theme. --> <style name="AppBaseTheme" parent="Theme.

設計模式與Android狀態模式——一個人的兩幅面孔

android 設計模式什麽是狀態模式 所謂狀態模式,就是當一個對象的內在轉臺改變時允許改變其行為,這個對象看起來就像是改變了其類的設計模式。狀態模式和策略模式都是為具有多種可能情形設計的模式,兩者的結構幾乎完全一樣,但狀態模式的行為是平行且不可替換的,而策略模式的行為則是彼此獨立的。換句話說就是:狀態模式將

C++設計模式簡單工廠工廠方法

#ifndef __FACTORYMETHOD_H__ #define __FACTORYMETHOD_H__ #include <iostream> #include <str

設計模式學習筆記狀態模式

狀態模式,這裡的狀態模式和EDA中的狀態設計方法相似,但又是不同的。下面這句話是網上的解釋:類的行為是基於它的狀態改變的。這種型別的設計模式屬於行為型模式。在狀態模式中,我們建立表示各種狀態的物件和一個行為隨著狀態物件改變而改變的context物件。【菜鳥教程】

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

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

JAVA設計模式 2建立型原型模式的理解與使用、理解淺克隆深克隆

在本節中,我們將學習和使用原型模式;這一節學習的原型模式也是`建立型` 模式的其中之一。再次複習一下:`建立型` 模式就是描述如何去更好的建立一個物件。 我們都知道,在JAVA 語言中。使用`new` 關鍵字建立一個新物件。將新的物件放到`堆記憶體` 裡面。當然,這個記憶體肯定是有大小限制的,況且,JAVA

java設計模式代理模式

pro 運行時間 cli .get aggregate stopped clas cnblogs dex 計算類中方法運行時間的幾種方案: Client: 1 package com.tn.proxy; 2 3 public class Client { 4

設計模式策略模式

concrete 方法 行為 無法 策略模式 避免 mint his 多態 1、定義 1.1標準定義 策略模式(StrategyPattern)是一種比較簡單的模式,也叫做政策模式(PolicyPattern)。其定義如下:Defineafamilyofalgorithms

JAVA設計模式外觀模式(Facade Pattern)

簡單 產生 creat ide oid dsm ref 功能 .net 一 定義 為子系統中的一組接口提供一個一致的界面。Facade模式定義了一個高層的接口,這個接口使得這一子系統更加easy使用。 二 案例 一個子系統中擁有3個模塊。每一個模塊

設計模式代理模式:靜態代理,動態代理,spring aop

spring 實現接口 找到 master 代碼 -s result java 統一 代理模式分為靜態代理和動態代理。我們拿鏈家來舉例子,我們本人是真實的對象,有真實的業務需求:需要去找房子;鏈家是中介,是代理類,他來幫我執行找房子的這個操作。 靜態代理:   1.實現一個

Unity與23種設計模式原型模式(Prototype)

模式 設計模式 unity 復制 ref 遊戲對象 代碼 設計 程序代碼 GoF中定義: “使用原型對象來產生指定類的對象,所以產生對象時,是使用復制原型對象來完成。” Unity中 開發者可以組裝遊戲對象 它可以包括復雜的組件 組裝好了之後,就可以將其存儲為Pre

設計模式module模式&&Revealing module (揭示)模式

但是 出版 參數傳遞 9.png 自然 指向 們的 private 初級 寫在前面 《head first設計模式》裏有一篇文章,是說使用模式的心智,   1、初學者"心智" :"我要為HELLO WORLD找個模式"   2、中級人員模式: "或許這裏我需要一個單件

JavaScript筆記設計模式-工廠模式

簡單工廠模式是由一個方法來決定到底要建立哪個類的例項, 而這些例項經常都擁有相同的介面. 這種模式主要用在所例項化的型別在編譯期並不能確定, 而是在執行期決定的情況。 說的通俗點,就像公司茶水間的飲料機,要咖啡還是牛奶取決於你按哪個按鈕。 var Car = (function () { v

PHP-設計模式工廠模式

author:咔咔 WeChat:fangkangfk   我這裡就不在去說那些專業術語了,我自己看著都迷糊。 其實可以想想平時自己的業務場景,加入我們的專案有多中支付方式。我之前的寫法就是倆個控制器,點選哪個走哪個方法,這樣也是可以實現的。但是現在有一個很nice的方

設計原則軟體設計模式六大原則---學習

又有一種說法:   http://www.cnblogs.com/yuanhailiang/p/9432198.html ———————————————————————————— 原文:https://www.cnblogs.com/zhanghengscnc/p/8299