Java设计模式之命令模式
来源:互联网 发布:淘宝评价手机怎么修改 编辑:程序博客网 时间:2024/06/16 22:19
定义:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。
命令模式涉及的角色:
1.Command:抽象命令类
定义命令的接口,声明执行的方法。
2.ConcreteCommand:具体命令类
命令接口实现对象,通常会持有接收者,并调用接收者的功能来完成命令要执行的操作。
3.Receiver:接收者
接收者,真正执行命令的对象。
4.Invoker:调用者
要求命令对象执行请求,通常会持有命令对象,可以持有多个命令对象。
5.Client:
创建具体的命令对象,并且设置命令对象的接收者。
以下以客户要求打扫卫生为例,解析命令模式。客户要求打扫卫生,往往先找到经理,给经理下命令,经理接到命令,让保洁员去执行命令。在此,客户是Client,经理是Invoker,保洁员是Receiver,具体清洁命令是ConcreteCommand。
Command,抽象命令类
package com.example.command;public interface Command { void clean(); void undoClean();}
具体命令类
package com.example.command;public class CleanRoomCommand implements Command{ private Cleaner cleaner; public CleanRoomCommand(Cleaner cleaner) { this.cleaner = cleaner; } @Override public void clean() { cleaner.clean("打扫房间"); } @Override public void undoClean() { cleaner.undoClean(); }}
保洁员(接收者)
package com.example.command;public class Cleaner { public void clean(String workContent){ System.out.println(workContent); } public void undoClean(){ System.out.println("放弃打扫卫生"); }}
经理(调用者)
package com.example.command;public class Manager { private Command command; public Manager(Command command) { super(); this.command = command; } public void clean(){ command.clean(); }}
客户
package com.example.command;public class Client { public static void main(String[] args) { Cleaner cleaner = new Cleaner(); Manager manager = new Manager(new CleanRoomCommand(cleaner)); manager.clean(); }}
打印结果
打扫房间
0 0
- Java设计模式-之Command命令模式
- Java设计模式之命令模式
- java设计模式之命令模式Command
- java设计模式之命令者模式
- JAVA设计模式之命令模式
- java设计模式之命令模式
- Java设计模式之命令模式
- java与设计模式之命令模式
- JAVA-设计模式之命令模式
- java设计模式之四命令模式
- java设计模式之命令模式
- java设计模式之命令模式
- Java设计模式泛型化之命令模式
- JAVA 设计模式之命令模式
- java设计模式之命令模式Command
- JAVA设计模式之命令模式
- java设计模式之命令模式
- java 设计模式之命令模式
- GCD Again 唯一分解定理
- 常见语法错误集锦
- Java线程:线程的同步与锁
- 车架号VIN码识别
- get、post区别
- Java设计模式之命令模式
- 衡水中学之正议
- 链表求和
- BAT面试之操作系统内存详解
- Spring MVC redirect
- 纯JSP登录练习
- Flink之Java 8
- Python正则表达式学习(4)——re.match() 和 re.search()
- Java程序运行原理