設計模式 命令模式

2021-10-03 02:24:16 字數 2051 閱讀 8536

什麼是命令模式結構

命令介面:命令是乙個介面,規定了用來封裝「請求」的若干個方法

具體命令:實現命令介面的類的例項

請求者:包含了命令介面的例項,可以通過呼叫具體的命令去執行封裝了請求的方法 實現

我們就按遙控器的例子來設計,假設我們有乙個10個按鈕的遙控器,兩個控制燈的開關,兩個控制電視的開關,剩下的留作未來產品的按鈕,現在點上去沒有效果,除了這四個按鈕,還有乙個特殊的撤銷按鈕,用來撤銷上一步的操作。

具體實現:

public class tv 

public void setoff()

}

2.電燈

public class light 

public void setoff()

}

public inte***ce icommand
public class lightoncommand implements icommand

@override

public void execute()

@override

public void undo()

}

2.電燈關的命令

public class lightoffcommand implements icommand

@override

public void execute()

@override

public void undo()

}

3.電視開的命令

public class tvoncommand implements icommand

@override

public void execute()

@override

public void undo()

}

4.電視關的命令

public class tvoffcommand implements icommand

@override

public void execute()

@override

public void undo()

}

5.空命令,用來初始化每個遙控器的按鈕

public class nocommand implements icommand

@override

public void undo()

}

public class control  

@override

public void execute()

@override

public void execute() {

for(int i = 0;i主函式,在上面主函式的基礎上加入

arraylistallon = new arraylist<>();

allon.add(lon);

allon.add(ton);

icommand aon = new alloffcommand(allon);

arraylistallff = new arraylist<>();

allff.add(lof);

allff.add(tof);

icommand aof = new alloffcommand(allff);

c.setoncommand(2, aon);

c.setoffcommand(2, aof);

c.onbutton(2);

c.offbutton(2);

結果

適用場景

這就是我所理解的命令模式,如果我有什麼錯誤或者你有更好的想法請告訴我。

設計模式 命令設計模式

一句話總結 命令設計模式的實質是將命令定義,命令的執行分離開,從而提公升了系統的解藕性 結構 命令的抽象command 命令的具體實現concretecommand 命令處理者抽象ireceiver 命令處理者的具體實現concretereceiver 命令的呼叫者invoker 客戶端client...

設計模式 命令模式

1 命令模式的角色組成 1 命令角色 command 生命執行操作的介面。介面或抽象類來實現。2 具體命令角色 concrete command 將乙個接收者物件繫結於乙個動作 呼叫接收者相應的操作,以實現命令角色宣告的執行操作的介面。3 客戶角色 client 建立乙個具體命令物件 並可以設定它的...

設計模式 命令模式

1 command.h ifndef command h define command h include include include using namespace std class chef 廚師,具體命令的執行者 class command 命令基類 class makemuttonco...