设计模式8之(命令模式)
程序员文章站
2022-05-26 08:39:07
...
设计模式8之(命令模式)
命令模式
若有不恰之处,请各位道友指正~
个人觉得,看懂类图就是学习设计模式的精髓了。
策略模式概念
- 将“请求” 封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持撤销的操作。
根据类图写代码
代码结构
public interface Command {
void execute();
}
public class Students {
/**
* 开班会
*/
public void meeting(){
System.out.println("attend meeting....");
}
/**
* 参加讲座
*/
public void attendLecture(){
System.out.println("attend lecture....");
}
}
public class MeetCommand implements Command{
Students students;
public MeetCommand(Students students) {
this.students = students;
}
@Override
public void execute() {
students.meeting();
}
}
public class Monitor{
Command command;
public void set(Command command) {
this.command = command;
}
public void notice() {
command.execute();
}
}
public class Test{
public static void main(String[] args) {
Monitor monitor = new Monitor();
Students stu = new Students();
MeetCommand meetCommand = new MeetCommand(stu);
monitor.set(meetCommand);
monitor.notice();
}
}
执行的动作已经完成了
实现撤销的话
// Monitor 中添加上一个动作,也可以用队列去保存一系列动作
Command undoCommand;
public Monitor(){
//需要初始化
undoCommand = new Command();
}
// ...
//在 Students 中写undo 方法
//在 MeetCommand 中 undo 的实现方法
再说说宏命令
// 利用数组实现,把一组命令添加到数组中,即可实现
// 题外:在实际开发中,我们也是尽可能写最简单的方法,然后用一些组合去完成实际操作(虽然会觉得某些放大冗余,但是看起来干净就ok了)。
Command[] command;