23種設計模式 15 State模式

2021-07-11 22:25:59 字數 817 閱讀 5673

state模式是乙個狀態機,context類是這個狀態機的控制器,狀態改變的實現在context類中,各個狀態下的行為也是由context類來呼叫,各個狀態分別用不同的類實現。state模式的結構圖如下:

**實現:

#include "iostream"

using namespace std;

class context;

class state

;class concretestate1:public state

;void concretestate1::handle(context *context)

void context::setstate(state *state)

void context::request()

int main()

狀態模式總結:

(1)狀態模式的好處就是將於特定狀態相關的行為區域性化,並且將不同狀態的行為分割開來。即將特定的狀態相關的行為都放入乙個物件中,由於所有與狀態相關的**都存在於某個concretestate中,所以通過定義新的子類可以很容易地增加新的狀態和轉換。滿足對擴充套件開放,對修改封閉的要求。

(2)這樣做的目的是為了消除龐大的條件分支語句,大的分支判斷會使得它們難以修改和擴充套件,狀態模式通過把各種狀態轉移邏輯分布到state的子類之間,來減少相互間的依賴。

(3)當乙個物件的行為取決於它們的狀態,並且它必須在執行時刻根據狀態改變它的行為時,就可以考慮使用狀態模式。

Java的23種設計模式 15 命令模式

命令模式 將乙個請求封裝為乙個物件,從而使我們可用不同的請求對客戶進行引數化。對請求排隊或者記錄請求日誌,以及支援可撤銷的操作。也稱之為 動作action模式 事務transaction模式 1.command抽象命令類 2.concretecommand具體命令類 3.invoker呼叫者 請求者...

23種設計模式 Adapter 介面卡 設計模式

adapter模式主要應用於 希望復用一些現存的類,但是介面又與復用環境要求不一致的情況 在遺留 復用,類庫遷移等方面非常有用.using system using system.collections.generic using system.linq using system.text usin...

設計模式 23種設計模式

一 軟體設計模式的概念 軟體設計模式 software design pattern 又稱設計模式,是一套被反覆使用 多數人知曉的 經過分類編目的 設計經驗的總結。它描述了在軟體設計過程中的一些不斷重 生的問題,以及該問題的解決方案。也就是說,它是解決特定問題的一系列套路,是前輩們的 設計經驗的總結...