【设计模式-命令模式】
时间:2022-07-24
本文章向大家介绍【设计模式-命令模式】,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
【导读】这是一个抽象与具体的关系,比如军队中上级命令下级去模拟训练或处理突发情况,这些都属于命令,只是命令的具体内容不同。
一、定义
将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。
二、实例
比如日常打杂中,组长需要让打杂人员(例如我)去启动或关闭某个服务器,这就是一组命令,组长与打杂人员之间的介质是命令这个对象。
服务器对象:
public class Server {
private String name;
public Server(String name) {
this.name = name;
}
}
抽象命令对象:
public interface Command {
void execute();
}
关闭服务器命令对象:
public class CloseServerCommand implements Command {
private Server server;
public CloseServerCommand(Server server) {
this.server = server;
}
@Override
public void execute() {
System.out.println("关闭"+server.getName()+"服务器");
}
}
启动服务器命令对象:
public class OpenServerCommand implements Command {
private Server server;
public OpenServerCommand(Server server) {
this.server = server;
}
@Override
public void execute() {
System.out.println("打开"+server.getName()+"服务器");
}
}
具体打杂人员对象:
public class Worker {
1、包含一组命令
private List<Command> commandList = new ArrayList<Command>();
public void addCommand(Command command) {
commandList.add(command);
}
2、依次执行命令
public void executeCommand() {
for (Command command : commandList) {
command.execute();
}
}
}
测试代码:
Worker worker = new Worker();
worker.addCommand(new OpenServerCommand(new Server("1.1.1.1")));
worker.addCommand(new CloseServerCommand(new Server("2.2.2.2")));
worker.executeCommand();
运行结果:
类图:
三、源码实例
(1)Thread里面的Runnable对象就是一个抽象的命令,都是需要重写其run方法。
(2)日常编码规范中方法参数设置一般都是传接口
最后说一句:设计模式基本是面向对象的多态、封装、继承的表现。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法