java設計模式(1) 命令模式

2021-08-18 22:29:25 字數 1613 閱讀 6073

在一些需求場景中,有發出命令的物件,有執行命令的物件,有具體的命令。但是如果要將這些模型抽象出來可以復用,這就是常見的命令模式。

命令模式中的5個角色

(1)呼叫者:負責呼叫命令物件,執行命令物件的方法

(2)執行者:具體執行某一方法

(3)抽象命令:乙個介面或抽象類,讓具體命令實現

(4)具體命令:實現抽象命令的具體方法

(5)客戶端:建立具體的命令物件和其接受者,並執行請求

比如我現在在鍵盤上打字輸入文字,我的角色就是客戶端,鍵盤就是呼叫者,而電腦就是執行者,我在鍵盤上輸入新增,撤銷,恢復命令。就會在電腦上同步顯示出來。整個過程就是命令模式。

比如領導命令下屬列印乙份放假檔案,領導就是呼叫者,下屬就是執行者,列印乙份檔案就是抽象命令,列印具體的放假命令就是具體的命令。在這個命令模式中,領導不關心具體是哪個下屬去列印,下屬也不知道給哪位領導在列印,他能列印很多檔案,當前這一刻他只列印乙份放假的檔案。這樣耦合度更低。

(1)呼叫者invoker

public class invoker 

// 設值注入

public void setcommand(command command)

// 業務方法,用於呼叫命令類

public void call()

}

(2)執行者receiver

public class receiver 

}

(3)抽象命令command

public abstract class command
(4)具體命令

新增concretecommandadd

public class concretecommandadd extends command

@override

public void execute()

}

恢復concretecommandredo

public class concretecommandredo extends command

@override

public void execute()

}

撤銷concretecommandundo

public class concretecommandundo extends command

@override

public void execute()

}

(5)客戶端test

public class test 

}

執行結果:

add action

redo action

undo action

Java設計模式 命令模式

命令模式定義 命令模式通過被稱為command的類封裝了對目標物件的呼叫行為以及呼叫引數。將乙個請求封裝稱為乙個命令,從而使你不同的請求對客戶進行引數化 隊請求排隊或記錄請求日誌,以及支援可撤銷的操作。優點 解耦了呼叫者與接受者之間的聯絡。呼叫者呼叫乙個操作,接受者接受請求執行相應的動作,因為使用命...

java設計模式 命令模式

1.概念 將來自客戶端的請求傳入乙個物件,從而使你可用不同的請求對客戶進行引數化。用於 行為請求者 與 行為實現者 解耦,可實現二者之間的松耦合,以便適應變化。分離變化與不變的因素。在物件導向的程式設計中,乙個物件呼叫另乙個物件,一般情況下的呼叫過程是 建立目標物件例項 設定呼叫引數 呼叫目標物件的...

JAVA設計模式 命令模式

命令模式,又稱為行動 action 模式 交易 transaction 模式,是一種行為型設計模式。命令模式的思想是 把乙個請求或者操作封裝到乙個物件中,允許系統使用不同的請求把客戶端引數化,從而實現對請求排隊或者記錄請求日誌 提供命令的撤銷和恢復功等能。命令模式涉及5個角色 結構圖 具體 實現 接...