java命令模式返回值_JAVA 设计模式 命令模式
目錄
用途
命令模式 (Command)
將一個請求
封裝為一個對象,從而使你可以用
不同的請求對客戶進行
參數化;
對請求排隊或請求日志,以及支持可撤銷的操作。
命令模式是一種行為型模式。
結構
圖-命令模式結構圖
Command: 用來聲明執行操作的接口。
abstract?class?Command?{
protected?Receiver?receiver;
public?Command(Receiver?receiver)?{
this.receiver?=?receiver;
}
public?abstract?void?Execute();
}
ConcreteCommand: 將一個接收者對象綁定一個動作,調用接收者相應的操作,以實現Execute。
class?ConcreteCommand?extends?Command?{
public?ConcreteCommand(Receiver?receiver)?{
super(receiver);
}
@Override
public?void?Execute()?{
receiver.Action();
}
}
Invoker: 要求該命令執行這個請求。
class?Invoker?{
private?Command?command;
public?Invoker(Command?command)?{
this.command?=?command;
}
public?void?ExecuteCommand()?{
command.Execute();
}
}
Receiver: 知道如何實施與執行一個與請求相關的操作,任何類都可能作為一個接收者。
class?Receiver?{
public?void?Action()?{
System.out.println("執行請求");
}
}
Client: 創建一個具體命令對象并設定它的接受者。
public?class?CommandPattern?{
public?static?void?main(String[]?args)?{
Receiver?receiver?=?new?Receiver();
Command?cmd?=?new?ConcreteCommand(receiver);
Invoker?invoker?=?new?Invoker(cmd);
invoker.ExecuteCommand();
}
}
交互
圖-命令模式交互圖
1、Client 創建一個 ConcreteCommand 對象并指定他的 Receiver 對象。
2、某個 Invoker 對象存儲該 ConcreteCommand 對象。
3、該 Invoker 通過調用 Command 對象的 Execute 操作來提交一個請求。若該命令是可撤銷的,ConcreteCommand 就在執行 Execute 操作之前存儲當前狀態以用于取消該命令。
4、ConcreteCommand 對象對調用它的 Receiver 的一些操作以執行該請求。
要點
1、命令模式的本質是對命令進行封裝,將發出命令的責任和執行命令的責任分割開。
2、每一個命令都是一個操作:請求的一方發出請求,要求執行一個操作;接收的一方收到請求,并執行操作。
3、命令模式允許請求的一方和接收的一方獨立開來,使得請求的一方不必知道接收請求的一方的接口,更不必知道請求是怎么被接收,以及操作是否被執行、何時被執行,以及是怎么被執行的。
4、命令模式使請求本身成為一個對象,這個對象和其他對象一樣可以被存儲和傳遞。
5、命令模式的關鍵在于引入了抽象命令接口,且發送者針對抽象命令接口編程,只有實現了抽象命令接口的具體命令才能與接收者相關聯。
推薦
參考資料
《大話設計模式》
《HeadFirst設計模式》
總結
以上是生活随笔為你收集整理的java命令模式返回值_JAVA 设计模式 命令模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java体系技术框架_java框架之Sp
- 下一篇: java 状态模式 同步_JAVA设计模