文档章节

设计模式----命令模式UML和实现代码

a
 amosli
发布于 2015/12/10 01:39
字数 543
阅读 169
收藏 6

一、什么是命令模式?

命令模式(Command)  将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数 化;对请求排队和日志,以及支持可撤销的操作。

类型:形为型模式 

顺口溜:中访备迭 观模状职解


二、命令模式UML


三、JAVA代码实现

package com.amosli.dp.behavior.command;

public abstract class Command {
	protected Receiver invoker;

	public Command(Receiver invoker) {
		this.invoker = invoker;
	}

	public abstract void execute();
}

package com.amosli.dp.behavior.command;

public class ConcreteCommand extends Command {

	public ConcreteCommand(Receiver invoker) {
		super(invoker);
	}

	@Override
	public void execute() {
		invoker.action();
	}

}

package com.amosli.dp.behavior.command;

import java.util.ArrayList;
import java.util.List;

public class Invoker {
	
	private List<Command> commands = new ArrayList<Command>();
	
	public void add(Command command){
		commands.add(command);
	}
	
	public void remove(Command command){
		commands.remove(command);
	}
	
	public void inform(){
		for (Command command : commands) {
			command.execute();
		}
	}
	
}

package com.amosli.dp.behavior.command;

public  class Receiver {
	public void action(){
		System.out.println("执行了这个操作。");
	}
}

四、使用场景

1.系统需要将请求调用者和请求接收者解耦,使得调用者和接收者不直接交互。

2.系统需要在不同的时间指定请求、将请求排队和执行请求。

3.系统需要支持命令的撤销(Undo)操作和恢复(Redo)操作。

4.系统需要将一组操作组合在一起,即支持宏命令。

五、优缺点

1、优点

1).降低对象之间的耦合度。

2).新的命令可以很容易地加入到系统中。

3).可以比较容易地设计一个组合命令。

4).调用同一方法实现不同的功能

2、缺点

使用命令模式可能会导致某些系统有过多的具体命令类。因为针对每一个命令都需要设计一个具体命令类,因此某些系统可能需要大量具体命令类,这将影响命令模式的使用。

六、源码地址

本系列文章源码地址,https://github.com/amosli/dp  欢迎Fork  & Star !!



© 著作权归作者所有

a
粉丝 5
博文 25
码字总数 18138
作品 0
黄浦
私信 提问
JS单例模式《JavaScript设计模式与开发实践》阅读笔记

此文仅记录本人阅读《JavaScript设计模式与开发实践》这个本时的感受,感谢作者曾探写出这么好的一本书。如有冒犯,如有错误,请联系本人:luogao_lg@sina.com处理。 这一章让我知道了单例模...

RoyLuo
2018/05/17
0
0
学了那么多年设计模式依然不会用!那可真蠢!

什么是设计模式? 设计模式(Design Pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。 设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决...

GitChat技术杂谈
2018/10/26
0
0
我的Java设计模式-代理模式

写完上一篇之后有小伙伴问我有没有写过代理模式,想看看我的理解。原本我的设计模式系列是按照创建型-行为型-结构型的顺序写下去的,既然小伙伴诚心诚意了,我就大发慈悲的穿插一篇代理模式。...

Jet啟思
2017/11/29
0
0
设计模式1——Singleton设计模式

Singleton单例模式是最简单的设计模式,它的主要作用是保证在程序运行生命周期中,使用了单例模式的类只能有一个实例对象存在。单例模式实现了类似C语言中全局变量的功能,单例模式常用于注册...

小米米儿小
2013/12/05
169
1
简单工厂、工厂方法、抽象工厂、策略模式、策略与工厂的区别

转载:原地址http://www.cnblogs.com/zhangchenliang/p/3700820.html 简单工厂、工厂方法、抽象工厂、策略模式、策略与工厂的区别 结合简单示例和UML图,讲解工厂模式简单原理。 一、引子 话说...

法斗斗
2018/05/08
277
0

没有更多内容

加载失败,请刷新页面

加载更多

《JAVA核心知识》学习笔记 (21. JAVA 算法)

21. JAVA 算法

Shingfi
1分钟前
0
0
redis 命令

redis 秒杀用到的 原子锁 :$redis->decr('jili_reward_goods_stock_' . $gifts_id) redis 秒杀用到的原子锁在秒杀过程中库存量增加 $redis->incrBy('key1', 10); redis 键查看重复:$redis-......

小小小壮
1分钟前
0
0
像智能手机一样管理云端应用:阿里云联合微软全球首发开放应用模型(OAM)

2019 年 10 月 17 日上午 9 点 15 分,阿里巴巴合伙人、阿里云智能基础产品事业部总经理蒋江伟在 QCon 上海《基于云架构的研发模式演进》主题演讲中,正式宣布: “今天,我们同微软联合发布...

阿里巴巴云原生
10分钟前
0
0
SpringBoot配置数据源

默认数据源 Springboot默认支持4种数据源类型,定义在 org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration 中,分别是: org.apache.tomcat.jdbc.pool.DataSource......

Gx_ww
13分钟前
0
0
Java应用在docker环境配置容器健康检查

在《极速体验docker容器健康》一文已体验了docker容器健康检查功能,今天就来给java应用的容器加入健康检查,使应用的状态随时都可以被监控和查看。 实战环境信息 操作系统:macOS Catalina ...

程序员欣宸
15分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部