使用命令模式模拟邮局送信的代码
时间: 2024-05-07 17:21:34 浏览: 108
用命令方式发送电子邮件的实例
4星 · 用户满意度95%
命令模式是一种行为设计模式,它允许将请求或操作封装为对象,从而使我们能够将其参数化、序列化、记录日志或支持撤销操作。以下是一个使用命令模式模拟邮局送信的示例代码:
```
// 定义命令接口
interface Command {
void execute();
}
// 定义具体命令类
class SendLetterCommand implements Command {
private PostOffice postOffice;
private String address;
private String content;
public SendLetterCommand(PostOffice postOffice, String address, String content) {
this.postOffice = postOffice;
this.address = address;
this.content = content;
}
public void execute() {
postOffice.sendLetter(address, content);
}
}
// 定义请求者类
class PostMan {
private Command command;
public void setCommand(Command command) {
this.command = command;
}
public void send() {
command.execute();
}
}
// 定义接收者类
class PostOffice {
public void sendLetter(String address, String content) {
System.out.println("Sending a letter to " + address + " with content: " + content);
}
}
// 客户端代码
public class Client {
public static void main(String[] args) {
PostOffice postOffice = new PostOffice();
Command command = new SendLetterCommand(postOffice, "China, Beijing", "Hello, world!");
PostMan postMan = new PostMan();
postMan.setCommand(command);
postMan.send();
}
}
```
在上面的示例中,我们定义了一个命令接口 `Command`,它包含一个 `execute()` 方法。我们还定义了一个具体命令类 `SendLetterCommand`,它实现了 `Command` 接口,并在 `execute()` 方法中调用 `PostOffice` 类的 `sendLetter()` 方法,从而实现了将信件送到邮局的功能。我们还定义了一个请求者类 `PostMan`,它包含一个命令对象 `command`,并在 `send()` 方法中调用 `command` 对象的 `execute()` 方法。最后,我们定义了一个接收者类 `PostOffice`,它实现了 `sendLetter()` 方法。在客户端中,我们首先创建一个 `PostOffice` 对象和一个 `SendLetterCommand` 对象,然后将 `SendLetterCommand` 对象设置为 `PostMan` 对象的命令对象,并调用 `send()` 方法,从而触发邮局送信的过程。
阅读全文