定义一个接口,包含一个命令和一个事件,定义两个模块,分别实现接口中的命令和事件
时间: 2024-09-17 18:05:23 浏览: 25
在软件设计中,接口是一种契约,它规定了类的行为和功能。为了定义一个涉及命令和事件处理的场景,你可以这样做:
首先,我们创建一个接口(通常在Java中用`interface`关键字)来描述这个交互模型:
```java
public interface CommandExecutor {
void executeCommand(Command command);
void registerListener(EventListener listener);
}
public interface EventListener {
void handleEvent(Event event);
}
```
这里定义了一个`CommandExecutor`接口,它有两部分:
1. `executeCommand(Command command)`:用于执行一个命令,`Command`是一个抽象类型,具体的命令由实现该接口的类提供。
2. `registerListener(EventListener listener)`:允许注册监听器来接收并处理事件。
接着,我们可以定义两个不同的模块或类来实现这个接口:
1. **CommandModule** - 实现`CommandExecutor`接口:
```java
public class ConcreteCommand implements Command {
// ...
@Override
public void execute() {
// 执行具体的操作
}
}
public class CommandExecutorImpl implements CommandExecutor {
private List<EventListener> listeners = new ArrayList<>();
@Override
public void executeCommand(Command command) {
command.execute();
for (EventListener listener : listeners) {
listener.handleEvent(new Event(command));
}
}
@Override
public void registerListener(EventListener listener) {
listeners.add(listener);
}
}
```
2. **EventManager** - 实现`EventListener`接口:
```java
public class EventManager implements EventListener {
@Override
public void handleEvent(Event event) {
// 处理接收到的事件
}
}
```
在这个例子中,`CommandExecutorImpl`负责执行命令并通知已注册的监听器,而`EventManager`负责响应接收到的事件。这实现了命令-事件的设计模式,使得系统可以松耦合地处理各种命令和事件。
阅读全文