博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式----命令模式
阅读量:6421 次
发布时间:2019-06-23

本文共 1342 字,大约阅读时间需要 4 分钟。

hot3.png

命令模式:

将请求封装成对象,这可以让你使用不同的请求、队列、或者日志请求来参数化其他对象。命令模式也可以支持撤销操作。

命令模式的结构:

命令模式有4个部分:

  • 命令接口/抽象类:声明了一个给所有具体命令类的抽象接口。
  • 具体命令类:实现命令接口/抽象类,负责调用接收者的相应操作。
  • 请求者类:负责调用命令对象执行请求。
  • 接收者类:负责接收一个请求,并具体实施和执行一个请求。

示例代码如下:

命令接口:命令接口只有一个抽象方法,就是执行方法。

public interface Command {    void execute();}

具体命令类:具体命令类需要持有一个接收者对象的句柄,以通知接收者执行相应动作。

public class ConCommand implements Command {    //持有相应的接收者对象    private Receiver receiver;    public ConCommand(Receiver receiver){        this.receiver = receiver;    }    //实现接口中的方法    public void execute() {        //通常会转调接收者对象的相应方法,让接收者来真正执行功能        receiver.action();    }}

请求者类:请求者类需要持有命令对象,方便让命令对象通知执行者执行相关动作。

public class Invoker {    //要持有命令对象    private Command command = null;    public Invoker(Command command){        this.command = command;    }    //此方法通知命令对象,让命令对象通知接收者执行相应操作    public void action(){        command.execute();    }}

执行者类:

public class Receiver {    //真正要执行的动作    public void action(){ System.out.println("执行操作"); }}

最后,来看一下命令模式是如何工作的:

public class Client {    public static void main(String[] args) {        //创建接收者        Receiver receiver = new Receiver();        //创建命令对象,设定它的接收者        Command command = new ConCommand(receiver);        //创建请求者,把命令对象设置进去        Invoker invoker = new Invoker(command);        //执行方法        invoker.action();    }}

 

转载于:https://my.oschina.net/HuoQibin/blog/1563430

你可能感兴趣的文章
[Phoenix] 七、如何使用自增ID
查看>>
replication监控及自动故障切换
查看>>
路由基本配置(上)
查看>>
windows上传文件到linux乱码解决
查看>>
Dao 常用方法记录
查看>>
fpm打包zabbix-agent
查看>>
Windows Server 2016 DNS Policy Split-Brain 3
查看>>
用脚本实现1+2+3...100
查看>>
pythopn List(列表)
查看>>
blat命令行发邮件小工具
查看>>
学习笔记 十五: mariadb
查看>>
学习笔记 124: 预备知识总结
查看>>
windows server之AD(1)
查看>>
如何升级PowerShell
查看>>
linux-sed
查看>>
oracle kill所有plsql developer进程
查看>>
python实现登录查询(可以模糊查询)
查看>>
LAMP架构(apache用户认证,域名重定向,apache访问日志)
查看>>
PHP设计模式:原型模式
查看>>
struts2.0的json操作
查看>>