命令模式(command pattern)是一種資料驅動的設計模式,它屬於行為型模式。請求以命令的形式包裹在物件中,並傳給呼叫物件。呼叫物件尋找可以處理該命令的合適的物件,並把該命令傳給相應的物件,該物件執行命令。
將乙個請求封裝成乙個物件,從而使您可以用不同的請求對客戶進行引數化。
在軟體系統中,行為請求者與行為實現者通常是一種緊耦合的關係,但某些場合,比如需要對行為進行記錄、撤銷或重做、事務等處理時,這種無法抵禦變化的緊耦合的設計就不太合適。
在某些場合,比如要對行為進行」記錄、撤銷/重做、事務」等處理,這種無法抵禦變化的緊耦合是不合適的。在這種情況下,如何將」行為請求者」與」行為實現者」解耦?將一組行為抽象為物件,可以實現二者之間的松耦合。
通過呼叫者呼叫接受者執行命令,順序:呼叫者→接受者→命令。
降低了系統耦合度。
新的命令可以很容易新增到系統中去。
使用命令模式可能會導致某些系統有過多的具體命令類。
認為是命令的地方都可以使用命令模式,比如: 1、gui 中每乙個按鈕都是一條命令。 2、模擬 cmd。
系統需要支援命令的撤銷(undo)操作和恢復(redo)操作,也可以考慮使用命令模式,見命令模式的擴充套件。
package com.abatt.command;
/** * author:yankai
* date:2019/4/25
* time:11:00
* desc:命令介面
*/inte***ce
command
/** * author:yankai
* date:2019/4/25
* time:11:00
* desc:燈開啟
*/class
lightoncommand
implements
command
@override
public
void
execute()
@override
public
void
undo()
}/**
* author:yankai
* date:2019/4/25
* time:11:00
* desc:預設不處理,用來初始化
*/class
nocommand
implements
command
@override
public
void
undo()
}/**
* author:yankai
* date:2019/4/25
* time:10:50
* desc:燈
*/class
light
public
voidon(
)public
void
off(
)public string getname()
}/**
* author:yankai
* date:2019/4/25
* time:11:00
* desc:燈關閉
*/class
lightoffcommend
implements
command
@override
public
void
execute()
@override
public
void
undo()
}/**
* author:yankai
* date:2019/4/25
* time:11:07
* desc:控制介面
*/inte***ce
control
/** * author:yankai
* date:2019/4/25
* time:11:07
* desc:控制實現類
*/class
commandmodelcontrol
implements
control
}public
void
setcommand
(int slot, command oncommand, command offcommand)
@override
public
void
onbutton
(int slot)
@override
public
void
offbutton
(int slot)
}/**
* author:yankai
* date:2019/4/25
* time:10:49
* desc:命令模式
Java23種設計模式
定義 設計模式 design pattern 是一套反覆使用 多數人知曉的 經過分類編目的 設計經驗的總結。使用設計模式是為了可重用 讓 更容易被他人理解 保證 可靠性。單例模式,特點 全域性只有乙個例項。定義 單例模式,也叫單子模式,是一種常用的軟體設計模式。在應用這個模式的時候,單例物件的類必須...
Java23種設計模式
建立型模式,共五種 工廠方法模式 抽象工廠模式 單例模式 建造者模式 原型模式。結構型模式,共七種 介面卡模式 裝飾器模式 模式 外觀模式 橋接模式 組合模式 享元模式。行為型模式,共十一種 策略模式 模板方法模式 觀察者模式 迭代子模式 責任鏈模式 命令模式 備忘錄模 式 狀態模式 訪問者模式 中...
Java 23種設計模式
型別 模式建立型工廠模式 抽象工廠模式 單例模式 建造者模式 原型模式 結構型介面卡模式 橋接模式 組合模式 外觀模式 裝飾者模式 享元模式 模式 行為型責任鏈模式 命令模式 直譯器模式 迭代模式 中介者模式 備忘錄模式 觀察者模式 狀態模式 策略模式 模板方法模式 訪問者模式 模式說明 工廠模式 ...