设计模式《JAVA与模式》之命令模式,修容教程新手图

命令模式(Command Pattern)是一种行为型设计模式,它允许将请求转换为一个独立的对象,使得请求的发送者和接收者解耦。这种模式的真正威力体现在可以支持撤销操作和重放操作。

在命令模式中,我们定义了一个命令接口(Command Interface),其中包含执行命令的方法 execute()。然后我们定义具体的命令类(Concrete Command),每个具体的命令都实现了命令接口,并重写了 execute() 方法,以实现具体的动作。此外,我们需要一个命令发送者(Command Invoker),它是一个中介者,负责将命令对象发送给命令接收者(Command Receiver)执行。命令接收者是真正执行操作的对象。

下面我们以一个简单的股票交易系统为例,来理解命令模式的具体实现过程。

首先,我们定义股票交易命令接口,其中包含买入和卖出股票的方法:

```java

public interface StockCommand {

void buy();

void sell();

}

```

接下来,我们定义具体的股票交易命令类 BuyStock 和 SellStock,它们分别实现了股票交易命令接口:

```java

public class BuyStock implements StockCommand {

private Stock stock;

public BuyStock(Stock stock) {

this.stock = stock;

}

public void buy() {

stock.buy();

}

public void sell() {

stock.sell();

}

}

public class SellStock implements StockCommand {

private Stock stock;

public SellStock(Stock stock) {

this.stock = stock;

}

public void buy() {

stock.buy();

}

public void sell() {

stock.sell();

}

}

```

在具体命令类中,我们注入了股票对象(Stock),这样在执行买卖操作的时候就可以直接调用股票对象的方法来实现。

然后我们定义股票对象(Stock),它包含了买入和卖出股票的方法:

```java

public class Stock {

private String name;

public Stock(String name) {

this.name = name;

}

public void buy() {

System.out.println("买入股票:" + name);

}

public void sell() {

System.out.println("卖出股票:" + name);

}

}

```

接下来我们定义命令发送者(Broker),它负责接收股票交易命令,并将其发送至命令接收者(StockExchange)执行:

```java

import java.util.ArrayList;

import java.util.List;

public class Broker {

private List commands = new ArrayList();

public void takeOrder(StockCommand command) {

commands.add(command);

}

public void placeOrders() {

for (StockCommand command : commands) {

command.execute();

}

commands.clear();

}

}

```

最后,我们定义命令接收者(StockExchange),它负责真正执行股票的买入和卖出操作:

```java

public class StockExchange {

public void buyStock() {

System.out.println("股票买入成功");

}

public void sellStock() {

System.out.println("股票卖出成功");

}

}

```

现在,我们可以编写一个测试类来验证命令模式的实现:

```java

public class Test {

public static void main(String[] args) {

Stock stock = new Stock("apple");

BuyStock buyStock = new BuyStock(stock);

SellStock sellStock = new SellStock(stock);

Broker broker = new Broker();

broker.takeOrder(buyStock);

broker.takeOrder(sellStock);

StockExchange stockExchange = new StockExchange();

broker.placeOrders();

stockExchange.buyStock();

stockExchange.sellStock();

}

}

```

在运行该测试类后,将依次输出:

```

买入股票:apple

卖出股票:apple

股票买入成功

股票卖出成功

```

上述示例较为简单,但却能够有效地阐述命令模式的核心思想。在更为复杂的场景中,命令模式能够很好地统一处理复杂的操作流程,实现撤销和重做等功能。因此,命令模式在实际应用中也得以广泛运用。

购买后如果没出现相关链接,请刷新当前页面!!!
链接失效的请留言 ,我看见了就补上!!!

网站内容来源于互联网,我们将这些信息转载出来的初衷在于分享与学习,这并不意味着我们站点对这些信息的观点或真实性作出认可,我们也不承担对这些信息的责任。
适度游戏益脑,沉迷游戏伤身。 合理安排时间,享受健康生活。适龄提示:适合18岁以上使用!

点赞(11) 打赏

评论列表 共有 1 条评论

朝朝暮暮只记得你的暖 1年前 回复TA

尊敬的老板,我相信,有您的大力支持,我们定会勇往直前,创造一个华丽的篇章,祝自己身体健康,祝愿公司越来越红火。

立即
投稿
发表
评论
返回
顶部