問題:如何套用指令模式?步驟:建立命令介面以定義所有命令的公共介面。實作命令介面以建立具體命令,封裝特定動作。建立呼叫者類別以向命令發送請求。建立接收者類別以執行由命令請求的動作。
Java設計模式:指令模式的實戰應用程式
概述
指令模式是一種行為設計模式,它透過將請求與執行請求的物件解耦來向物件和客戶端提供鬆散耦合。
如何套用
要實作指令模式,需要建立下列類別:
實戰案例
以下是使用指令模式實作遙控器的Java 範例:
// 命令接口 interface Command { void execute(); } // 具体命令:开电视 class TurnOnCommand implements Command { private Television television; public TurnOnCommand(Television television) { this.television = television; } @Override public void execute() { television.turnOn(); } } // 具体命令:关电视 class TurnOffCommand implements Command { private Television television; public TurnOffCommand(Television television) { this.television = television; } @Override public void execute() { television.turnOff(); } } // 调用者:遥控器 class RemoteControl { private List<Command> commands; public RemoteControl() { commands = new ArrayList<>(); } public void addCommand(Command command) { commands.add(command); } public void pressButton() { for (Command command : commands) { command.execute(); } } } // 接收者:电视 class Television { public void turnOn() { System.out.println("电视已打开"); } public void turnOff() { System.out.println("电视已关闭"); } } // 主方法 public class Main { public static void main(String[] args) { // 创建电视 Television television = new Television(); // 创建命令 Command turnOnCommand = new TurnOnCommand(television); Command turnOffCommand = new TurnOffCommand(television); // 创建遥控器并添加命令 RemoteControl remoteControl = new RemoteControl(); remoteControl.addCommand(turnOnCommand); remoteControl.addCommand(turnOffCommand); // 按下遥控器的按钮 remoteControl.pressButton(); } }
在這個範例中,TurnOnCommand
和TurnOffCommand
類別實作了Command
介面並封裝了開啟和關閉電視機的動作。 RemoteControl
類別扮演呼叫者的角色,負責向命令發送請求。 Television
類別作為接收者,接收並執行請求的動作。
透過這種方式,指令模式將動作與執行動作的物件解耦,提高了系統的靈活性、可擴展性和可維護性。
以上是Java設計模式之命令模式的實戰應用的詳細內容。更多資訊請關注PHP中文網其他相關文章!