命令模式
来源:互联网 发布:三星淘宝官方旗舰店 编辑:程序博客网 时间:2024/06/05 07:56
命令模式(Command Pattern)属于行为型模式。这个模式将请求通过命令的形式封装成对象。用来将“行为请求者”与“行为实现者”解耦,这样用户只需要提出一个命令,而不用关心这个命令由谁实现。应用场景:比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的,可以采用命令模式。
命令接口:
public interface Task { void execute();}
具体的命令:
public class TaskBug implements Task { private Worker worker; public TaskBug(Worker worker) { this.worker = worker; } @Override public void execute() { worker.fixBug(); }}public class TaskCode implements Task { private Worker worker; public TaskCode(Worker worker) { this.worker = worker; } @Override public void execute() { worker.doCoding(); }}
行为的实现者:
public class Worker { private String name; public Worker(String name) { this.name = name; } public void doCoding() { System.out.println(name + "打代码"); } public void fixBug() { System.out.println(name + "改bug"); }}
行为的调用者:
public class Invoker { private List<Task> taskList = new ArrayList<>(); public void addTask(Task order) { taskList.add(order); } public void excuteTasks() { for (Task order : taskList) { order.execute(); } taskList.clear(); }}
调用:
// invoker是命令的调用者Invoker invoker = new Invoker();// worker是命令的执行着Worker worker = new Worker("小明");// 创建和worker相关的两个命令TaskCode taskCode = new TaskCode(worker);TaskBug taskBug = new TaskBug(worker);// 执行命令invoker.addTask(taskCode);invoker.addTask(taskBug);invoker.excuteTasks();
输出结果:
小明打代码小明改bug
优点:降低统耦合度。 添加很容易添加新的命令
缺点:使用命令模式可能会导致有过多的具体命令类
阅读全文
1 0
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- 命令模式
- [LeetCode] 437. Path Sum III
- linux命令(一)
- 使用笔记本搭建服务器(外网可以访问)
- 如何判断请求是否是AJAX请求
- vuex
- 命令模式
- 在table中使显示的文本显示一行后其余用省略号表示
- 利用栈求表达式的值(数据结构课程设计)
- 如何选择python版本
- opencv--003改变图片的对比度和亮度
- log4j代码优化
- lua深入理解函数
- FindBugs 简介
- Maven工程引入JSON依赖JAR包