Python 官方文档:入门教程 => 点击学习
目录一.介绍二.场景约束三.UML类图四.示意代码五.优点六.在jdk中的应用一.介绍 命令模式(Command Pattern)属于行为型模式。请求以命令的形式包裹在对象中,并传给
命令模式(Command Pattern)属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令,执行顺序是调用者→命令→接收者,实现调用者(Invoker)与接收者(Receiver)解耦
设计一个文本编辑器(TextField),支持复制、插入以及撤销操作
业务代码
//抽象命令
public interface Command {
void execute();
void undo();
}
//调用者
class Invoker{
private Command command;
public Invoker(Command command) {
this.command = command;
}
public void setCommand(Command command) {
this.command = command;
}
public void call(){
command.execute();
command.undo();
}
}
//具体命令
class insertCommand implements Command {
private TextField textField;
private String insertStr = "insertStr";
public insertCommand(TextField textField) {
this.textField = textField;
}
@Override
public void execute() {
textField.text += insertStr;
System.out.println(textField.text);
}
@Override
public void undo() {
textField.text = textField.text.substring(0, textField.text.length() - insertStr.length());
System.out.println(textField.text);
}
}
//具体命令
class CopyCommand implements Command {
private TextField textField;
public CopyCommand(TextField textField) {
this.textField = textField;
}
@Override
public void execute() {
textField.text += textField.text;
System.out.println(textField.text);
}
@Override
public void undo() {
textField.text = textField.text.substring(0, textField.text.length() / 2);
System.out.println(textField.text);
}
}
//接收者
class TextField {
public String text = "text";
}
客户端
public class Client {
public static void main(String[] args) {
Invoker invoker = new Invoker(new CopyCommand(new TextField()));
invoker.call();
}
}
优点
java.lang.Runnable是一个典型的命令模式,Runnable充当抽象命令的角色,Thread充当调用者的角色,而接收者的角色是开发者自己定义的
//具体命令
class ConcreteCommand implements Runnable{
private Receiver receiver;
public ConcreteCommand(Receiver receiver) {
this.receiver = receiver;
}
@Override
public void run() {
receiver.execute();
}
}
//接收者
class Receiver{
public void execute(){
System.out.println("执行逻辑");
}
}
到此这篇关于Java行为型模式中命令模式分析的文章就介绍到这了,更多相关Java命令模式内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: Java行为型模式中命令模式分析
本文链接: https://lsjlt.com/news/196519.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0