您的位置:首页 > 游戏 > 手游 > java设计模式-命令模式

java设计模式-命令模式

2025/7/27 15:37:17 来源:https://blog.csdn.net/wsrzsfgst/article/details/140591996  浏览:    关键词:java设计模式-命令模式

命令模式是一种行为设计模式,它允许将请求封装为对象,使得可以用不同的请求对客户进行参数化。在 Java Swing 中,结合命令模式可以很好地处理按钮点击事件。下面是一个简单的示例,演示如何使用命令模式来处理 Java Swing 中的按钮点击事件:

步骤一:定义命令接口

首先,我们定义一个命令接口 Command,它有一个执行方法 execute()

// Command.java
public interface Command {void execute();
}

步骤二:创建具体命令类

然后,我们创建具体的命令类,每个类代表一个具体的操作。

// OpenFileCommand.java
public class OpenFileCommand implements Command {private final String filename;public OpenFileCommand(String filename) {this.filename = filename;}@Overridepublic void execute() {// 执行打开文件的操作System.out.println("Opening file: " + filename);// 实际应用中可以在这里编写打开文件的具体逻辑}
}// SaveFileCommand.java
public class SaveFileCommand implements Command {private final String filename;public SaveFileCommand(String filename) {this.filename = filename;}@Overridepublic void execute() {// 执行保存文件的操作System.out.println("Saving file: " + filename);// 实际应用中可以在这里编写保存文件的具体逻辑}
}

步骤三:创建调用者类

接下来,我们创建一个调用者类,用于触发命令执行。

// ButtonInvoker.java
public class ButtonInvoker {private Command command;public void setCommand(Command command) {this.command = command;}public void clickButton() {// 模拟按钮点击事件command.execute();}
}

步骤四:创建 Swing 界面和按钮

现在,我们创建一个简单的 Swing 界面,并添加按钮用于触发命令。

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;public class CommandPatternExample extends JFrame {private ButtonInvoker invoker = new ButtonInvoker();public CommandPatternExample() {super("Command Pattern Example");setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setSize(300, 200);JButton openButton = new JButton("Open File");openButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {Command openCommand = new OpenFileCommand("example.txt");invoker.setCommand(openCommand);invoker.clickButton();}});JButton saveButton = new JButton("Save File");saveButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {Command saveCommand = new SaveFileCommand("example.txt");invoker.setCommand(saveCommand);invoker.clickButton();}});JPanel panel = new JPanel();panel.setLayout(new FlowLayout());panel.add(openButton);panel.add(saveButton);getContentPane().add(panel);setVisible(true);}public static void main(String[] args) {SwingUtilities.invokeLater(new Runnable() {public void run() {new CommandPatternExample();}});}
}

解释说明

  • 命令接口 Command:定义了所有具体命令类都要实现的 execute() 方法。
  • 具体命令类:如 OpenFileCommandSaveFileCommand,分别实现了打开文件和保存文件的操作。
  • 调用者类 ButtonInvoker:负责调用命令对象的 execute() 方法。
  • Swing 界面:在 CommandPatternExample 类中创建了一个简单的 Swing 界面,包含两个按钮,分别用于触发打开文件和保存文件的命令。

在实际应用中,你可以根据需要定义更复杂的命令和操作,并结合更多的 Swing 组件和事件来实现更复杂的用户交互和命令处理逻辑。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com