1.使用JAVA语言的命令模式模拟邮局送信
时间: 2024-05-03 11:17:50 浏览: 120
好的,以下是一个简单的实现:
首先,需要定义命令接口`Command`,其中包含一个`execute()`方法:
```java
public interface Command {
void execute();
}
```
接下来,定义两个具体的命令类`SendLetterCommand`和`DeliverLetterCommand`,分别代表发送信件和投递信件的操作。这两个类都需要实现`Command`接口的`execute()`方法:
```java
public class SendLetterCommand implements Command {
private PostOffice postOffice;
private String letter;
public SendLetterCommand(PostOffice postOffice, String letter) {
this.postOffice = postOffice;
this.letter = letter;
}
@Override
public void execute() {
postOffice.sendLetter(letter);
}
}
public class DeliverLetterCommand implements Command {
private Postman postman;
private String address;
public DeliverLetterCommand(Postman postman, String address) {
this.postman = postman;
this.address = address;
}
@Override
public void execute() {
postman.deliverLetter(address);
}
}
```
其中,`SendLetterCommand`包含一个邮局对象和一个信件内容,`DeliverLetterCommand`包含一个邮递员对象和一个收件人地址。
接着,定义邮局类`PostOffice`和邮递员类`Postman`,分别实现发送信件和投递信件的具体操作:
```java
public class PostOffice {
public void sendLetter(String letter) {
System.out.println("发送信件:" + letter);
}
}
public class Postman {
public void deliverLetter(String address) {
System.out.println("投递信件至:" + address);
}
}
```
最后,定义一个命令调用类`CommandInvoker`,其中包含一个`execute(Command command)`方法,用于执行命令:
```java
public class CommandInvoker {
public void execute(Command command) {
command.execute();
}
}
```
使用时,可以先创建一个邮局对象和一个邮递员对象,然后根据需要创建`SendLetterCommand`和`DeliverLetterCommand`对象,并将它们作为参数传递给`CommandInvoker`的`execute()`方法,即可模拟邮局送信的过程:
```java
public class Main {
public static void main(String[] args) {
PostOffice postOffice = new PostOffice();
Postman postman = new Postman();
CommandInvoker invoker = new CommandInvoker();
Command sendCommand = new SendLetterCommand(postOffice, "Hello, world!");
Command deliverCommand = new DeliverLetterCommand(postman, "123 Main Street");
invoker.execute(sendCommand);
invoker.execute(deliverCommand);
}
}
```
输出结果为:
```
发送信件:Hello, world!
投递信件至:123 Main Street
```
这就是一个简单的命令模式模拟邮局送信的实现。
阅读全文