命令模式 Head First版

2021-08-26 22:24:08 字數 1313 閱讀 2140

用命令模式實現這樣乙個需求:

有個按鈕,將一盞電燈的開和關動作都繫結在這個按鈕上。另外還有乙個undo按鈕,可撤消之前的乙個動作。

下面這個電燈類,對應上面的圖也就是接收者

package com.headfirst.chapter6;

public class light

public void off()

}

下面這個是具體的命令類,也就是開燈命令

package com.headfirst.chapter6;

public class lightoncommand implements command

public void execute()

public void undo()

}

package com.headfirst.chapter6;

public class lightoffcommand implements command

public void execute()

public void undo()

}

下面這個是invoker

package com.headfirst.chapter6;

public class ******remotecontrol

public void buttonwaspressed()

public void undobuttonwaspressed()

}

測試類

package com.headfirst.chapter6;

public class remotecontroltest

}

最後列印出:

the light is on

the light if off

the light is on

命令模式的定義:將「請求」封裝成物件,以便使用不同的請求,佇列或者日誌來引數化其他物件。命令模式也支援可撤銷的操作。

上面的「佇列或日誌來引數化」的意思是有很多命令,以佇列的方式先後執行。

日誌是指將每個操作動作「命令化」,記錄在日誌中。

Head First 命令模式

這章我們來看下命令模式,從乙個例子開始,我們想做乙個遙控器,這個遙控器可以控制燈 電視 風扇 cd機等等,並且還有乙個撤銷鍵。這裡我們就可以利用命令模式來很好的完成這個遙控器。1.首先客戶負責建立命令物件。命令物件一般有乙個execute函式,代表這個命令要完成的事情 2.客戶把命令放在乙個控制器中...

Head First設計模式1 命令模式

命令模式 通過命令模式,可以使發出請求的物件與被請求的物件都依賴抽象程式設計,而非依賴具體的類,實現了解耦。並且由於較好的封裝了請求,命令模式可以被撤銷。package command inte ce icommand class light public void on public void o...

《Head First設計模式》之命令模式

命令模式就是將方法呼叫 method invocation 封裝起來。通過封裝方法呼叫,我們可以把運算塊包裝成形,所以呼叫此運算的物件不需要關心事情是如何進行的,只要知道如何使用包裝成形的方法來完成它就可以了。通過封裝方法呼叫,可以用在以下場景 記錄日誌或者重複使用這些封裝來實現撤銷 undo 我對...