設計模式 命令模式

2021-06-28 19:44:38 字數 1707 閱讀 9836

命令模式:

將請求封裝成物件,從而使用不同的請求、佇列以及日誌來引數化其他物件。命令物件支援可撤銷的操作。命令物件將動作和接收者包進物件中。實現「行為請求者」與「行為實現者」解耦。

要點: 命令物件中動作和接收者被綁在一起,控制器呼叫命令物件的execute方法。

應用: 執行緒池、佇列請求、日誌請求。

類圖:

以下程式模擬乙個控制器對客廳的燈和車庫的門進行控制。

1.定義燈

package net.dp.command.******remote;

public class light

public void on()

public void off()

}

2.定義車庫的門

package net.dp.command.******remote;

public class garagedoor

public void up()

public void down()

public void stop()

public void lighton()

public void lightoff()

}

3.定義命令介面

package net.dp.command.******remote;

public inte***ce command

4.實現命令介面

package net.dp.command.******remote;

public class lightoncommand implements command

public void execute()

}

package net.dp.command.******remote;

public class lightoffcommand implements command

public void execute()

}

package net.dp.command.******remote;

public class garagedooropencommand implements command

public void execute()

}

5.編寫控制器,實現命令的呼叫

package net.dp.command.******remote; //

// this is the invoker

//public class ******remotecontrol

public void setcommand(command command)

public void buttonwaspressed()

}

6.寫完啦!!

package net.dp.command.******remote;

public class remotecontroltest

}

設計模式 命令設計模式

一句話總結 命令設計模式的實質是將命令定義,命令的執行分離開,從而提公升了系統的解藕性 結構 命令的抽象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...