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

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

 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行參数化;对请求排队或记录请求日志。以支持可撤销的操作。

这里写图片描写叙述

命令模式的角色

1. client角色(Client):创建一个详细命令(ConcreteCommand)对象并确定其接收者。
2. 命令角色(Command):声明一个给全部命令类的抽象接口。
3. 详细命令角色(ConcreteCommand):定义一个接收者和行为之间的弱耦合;实现execute()方法,负责调用接收者的对应操作。execute()方法叫做运行方法。

4. 请求者角色(Invoker):负责调用命令对象运行请求,相关的方法叫做行动方法。
5. 接收者角色(Receiver):负责详细实施和运行一个请求。不论什么一个类都能够称为接收者,实施和运行请求的方法叫做行动方法。

举个简单样例(录音机有播音Play,倒带Rewind和停止Stop功能)

1 接收者角色

public class AudioPlayer{    public void play()    {        System.out.println("Play");    }    public void rewind()    {        System.out.println("Rewind");    }    public void stop()    {        System.out.println("Stop");    }}

2 抽象命令角色

public interface Command{    public void execute();}

3 详细命令角色

public class PlayCommand implements Command{
private AudioPlayer myAudio; public PlayCommand(AudioPlayer audioPlayer) { this.myAudio = audioPlayer; } @Override public void execute() { myAudio.play(); }}public class RewindCommand implements Command{
private AudioPlayer myAudio; public RewindCommand(AudioPlayer audioPlayer) { this.myAudio = audioPlayer; } @Override public void execute() { this.myAudio.rewind(); }}public class StopCommand implements Command{
private AudioPlayer myAudio; public StopCommand(AudioPlayer audioPlayer) { this.myAudio = audioPlayer; } @Override public void execute() { this.myAudio.stop(); }}

4 请求这角色(由按键扮演)

public class Keypad{    private Command playCommand;    private Command rewindCommand;    private<
posted @
2017-08-17 18:42 阅读(
...) 评论(
...)
你可能感兴趣的文章
怎么使用阿里云直播服务应用到现在主流直播平台中
查看>>
Xcode全局替换内容,一键Replace
查看>>
1000 加密算法
查看>>
exif_imagetype() 函数在linux下的php中不存在
查看>>
Ruby的case语句
查看>>
Linux的链接文件-ln命令
查看>>
maven的tomcat插件如何进行debug调试
查看>>
table表头固定
查看>>
截取字符串中两个字符串中的字符串
查看>>
spring xml properties split with comma for list
查看>>
判断点是否在三角形内
查看>>
Android实战简易教程-第二十三枪(基于Baas的用户注冊验证username是否反复功能!)...
查看>>
在odl中怎样实现rpc
查看>>
leetcode 110 Balanced Binary Tree
查看>>
python活用isdigit方法显示系统进程
查看>>
项目开发总结
查看>>
知行合一
查看>>
jmeter插件之jsonpath提取响应结果和做断言
查看>>
发布支持多线程的PowerShell模块 —— MultiThreadTaskRunner
查看>>
Ubuntu ctrl+alt会导致窗口还原的问题
查看>>