Java設計模式之命令模式

2021-08-19 18:27:42 字數 1609 閱讀 4097

public

inte***ce

command

public

class

lightoncommand

implements

command

public

void

execute()

public

void

undo()

}

public

class

tvoncommand

implements

command

public

void

execute()

public

void

undo()

}

public

inte***ce

public

void

on();

public

void

off();

}

public

class

tvimplements

public

void

on()

public

void

off()

}

public

class

light

implements

public

void

on()

public

void

off()

}

public

class

miphone

public

void

setcommand(command command)

public

void

onbuttonwaspushed(int slot)

public

static

void

main(string args)

}

系統需要在不同的時間指定請求、將請求排隊(如:執行緒池+工作佇列)和執行請求。

系統需要支援命令的撤銷(undo)操作和恢復(redo)操作。

系統需要將一組操作組合在一起,即支援巨集命令。

command是頭等的物件。它們可像其他的物件一樣被操縱和擴充套件。

組合命令:你可將多個命令裝配成乙個組合命令,即可以比較容易地設計乙個命令佇列和巨集命令。一般說來,組合命令是composite模式的乙個例項。

增加新的command很容易,因為這無需改變已有的類。

可以方便地實現對請求的undo和redo。

佇列請求:將命令排成乙個佇列打包,乙個個呼叫 execute 方法,如執行緒池的任務佇列,執行緒不關心任務佇列中是讀 io 還是計算,只取出命令後執行,接著進行下乙個。

日誌請求:某些應用需要我們將所有的動作記錄在日誌中,然後在系統宕機等情況出現時,重新呼叫這些動作恢復到之前的狀態。如資料庫事務。

java設計模式之命令模式

意圖 將乙個請求封裝為乙個物件,從而可用不同的請求對客戶進行引數化 對請求排隊或記錄日誌,以及支援可撤銷的操作 動機 將 發出請求的物件 和 接收與執行這些請求的物件 分隔開來。效果 1 command模式將呼叫操作的物件和實現該操作的物件解耦 2 可以將多個命令裝配成乙個復合命令,復合命令是com...

java設計模式之命令模式

定義 把方法呼叫封裝起來,命令模式請求或者操作封裝到乙個物件之中,呼叫的物件需要知道是如何實現的,只要明白如何使用就好。應用場景 記錄日誌,是用這些命令實現撤銷或者恢復的 命令模式對命令進行封裝,發出和執行分派給兩個不同的物件 把請求命令和執行命令分開了 這樣做的好處是 a 便於新的命令加入 b 命...

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

命令模式,其實就是進一步封裝,把方法呼叫封裝起來,head first中舉了乙個很生動的例子,飯店中點餐的流暢如下 客戶點了訂單並交給服務端,然後女招待把訂單交給大廚的師傅,大師傅最後呈現出一道可口的菜餚。在這個過程中,客戶只需要知道來飯店點好選單就可以等吃飯了,服務員也是只需要知道把訂單交給大廚,...