java中design怎么打开,Design patterns Java中的命令模式示例

示例

维基百科定义:命令模式是一种行为设计模式,其中的对象用于封装以后执行动作或触发事件所需的所有信息。

来自factory的UML图:

基本组件和工作流程:Command 声明抽象命令的接口,例如 execute()

Receiver 知道如何执行特定命令

Invoker持有ConcreteCommand,必须执行

Client创建ConcreteCommand并分配Receiver

ConcreteCommand定义Command和之间的绑定Receiver

通过这种方式,命令模式通过Invoker将发件人(客户端)与Receiver解耦。调用具有的完整的知识命令要执行,并命令知道哪些接收器被调用执行特定操作。

程式码片段:

interface Command {

void execute();

}

class Receiver {

public void switchOn(){

System.out.println("开启:"+this.getClass().getSimpleName());

}

}

class OnCommand implements Command{

private Receiver receiver;

public OnCommand(Receiver receiver){

this.receiver= receiver;

}

public void execute(){

receiver.switchOn();

}

}

class Invoker {

private Command command;

public Invoker(Command command){

this.command= command;

}

public void execute(){

this.command.execute();

}

}

class TV extends Receiver{

public String toString(){

return this.getClass().getSimpleName();

}

}

class DVDPlayer extends Receiver{

public String toString(){

return this.getClass().getSimpleName();

}

}

public class CommandDemoEx{

public static void main(String args[]){

// 在具有相同调用者的电视上命令

Receiver receiver = new TV();

Command onCommand = new OnCommand(receiver);

Invoker invoker = new Invoker(onCommand);

invoker.execute();

// 具有相同调用程序的DVDPlayer的命令

receiver = new DVDPlayer();

onCommand = new OnCommand(receiver);

invoker = new Invoker(onCommand);

invoker.execute();

}

}

输出:

开启:TV

开启:DVDPlayer

说明:

在这个例子中命令界面定义execute()方法。

OnCommand是ConcreteCommand,它实现execute()方法。

接收器是基类。

TV和DVDPlayer是两种类型的Receiver,它们像OnCommand一样传递给ConcreteCommand。

调用者包含Command。这是将Sender与Receiver分离的关键。

调用器接收按需- >它调用接收器(TV)到执行此命令。

通过使用Invoker,您可以打开TV和DVDPlayer。如果扩展此程序,则也将同时关闭TV和DVDPlayer。

关键用例:实现回调机制

实现撤消和重做功能

维护命令历史记录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值