文档章节

GOF23之命令模式

captainliu
 captainliu
发布于 2017/05/18 15:21
字数 245
阅读 3
收藏 0

命令模式:将一个请求封装成一个对象,从而使我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可以撤销的操作。也称之为:动作Action模式,事务transaction模式。

 

package com.gof.command;

/**
 * 真正命令的执行者
 * @author root
 *
 */
public class Receiver {
	public void action() {
		System.out.println("Receiver.action()");
	}
}
package com.gof.command;

public interface Command {
	/**
	 * 这个方法是一个返回结果为空的方法
	 * 实际项目中,可以根据需求设计多个不同的方法
	 */
	void  execute();
}

class  ConcreteCommand  implements Command{
	
	private  Receiver  receive;
	
	
	public ConcreteCommand(Receiver receive) {
		super();
		this.receive = receive;
	}


	@Override
	public void execute() {
		receive.action();
	}
	
}
package com.gof.command;

/**
 * 调用者 、发起者
 * @author root
 *
 */
public class Invoke {
	private  Command command;//也可以通过list容纳多个命令对象

	public Invoke(Command command) {
		super();
		this.command = command;
	}
	
	/**
	 * 业务方法,用于调用命令类的方法
	 */
	public void call() {
		command.execute();
	}
}
package com.gof.command;

public class Client {
	public static void main(String[] args) {
		ConcreteCommand command = new  ConcreteCommand(new Receiver());
		
		Invoke invoke = new Invoke(command);
		invoke.call();  
	}
}

© 著作权归作者所有

上一篇: GOF23之策略模式
captainliu
粉丝 11
博文 106
码字总数 83678
作品 0
昌平
程序员
私信 提问
【设计模式笔记】(十六)- 代理模式

一、简述 代理模式(Proxy Pattern),为其他对象提供一个代理,并由代理对象控制原有对象的引用;也称为委托模式。 其实代理模式无论是在日常开发还是设计模式中,基本随处可见,中介者模式中...

MrTrying
2018/06/24
0
0
设计模式已经陨落了?

你现在是坐在一个程序员旁边吗?如果是的话,那么在你读下面的段落之前,有一个简单的实验。让他们到一边去,问问他们两个问题并记录下答案。首先问他们“什么是设计模式?”然后再问“说出你...

oschina
2014/03/11
9.1K
69
《PHP设计模式大全》系列分享专栏

《PHP设计模式大全》已整理成PDF文档,点击可直接下载至本地查阅 https://www.webfalse.com/read/201739.html 文章 php设计模式介绍之编程惯用法第1/3页 php设计模式介绍之值对象模式第1/5页...

kaixin_code
2018/11/06
0
0
设计模式梳理(一)

设计模式梳理(一) 总体来说设计模式分为三大类: @案例源码地址:https://gitlab.com/lxqxsyu/DisgnPattern 创建型模式 简单工厂模式 工厂类是整个模式的关键。它包含必要的判断逻辑,能够...

lxq_xsyu
2017/11/02
0
0
《JavaScript设计模式与开发实践》原则篇(2)—— 最少知识原则

最少知识原则(LKP)说的是一个软件实体应当尽可能少地与其他实体发生相互作用。这 里的软件实体是一个广义的概念,不仅包括对象,还包括系统、类、模块、函数、变量等。 单一职责原则指导我们...

嗨呀豆豆呢
2018/12/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Qt编写数据可视化大屏界面电子看板9-曲线效果

一、前言 为了编写数据可视化大屏界面电子看板系统,为了能够兼容Qt4和嵌入式linux系统,尤其是那种主频很低的,但是老板又需要在这种硬件上(比如树莓派、香橙派、全志H3、imx6)展示这么华...

飞扬青云
22分钟前
1
0
责任链模式

//这篇博客的博主真的不错,解析的都很清晰明了, https://blog.csdn.net/jason0539/article/details/45091639

南桥北木
48分钟前
3
0
Flutter -------- dio网络请求

dio是Flutter中文网开源的一个强大的Dart Http请求库,支持Restful API、FormData、拦截器、请求取消、Cookie管理、文件上传/下载、超时等... 1.添加依赖# dependencies: dio: 2.1.x #...

切切歆语
58分钟前
1
0
PHP的学习

PHP变量的命名必须以$符开始,如: $i;$j;$name; $符后面的第一个字符不可以是数字,只能是字母或者下划线(_)。 除了下划线(_)之外,变量中不能出现任何特殊字符,也就是变量只能包含...

墨冥
今天
3
0
一篇文章彻底搞懂Java虚拟机

概念: 虚拟机:指以软件的方式模拟具有完整硬件系统功能、运行在一个完全隔离环境中的完整计算机系统 ,是物理机的软件实现。常用的虚拟机有VMWare,Visual Box,Java Virtual Machine(Jav...

骚年锦时
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部