转载:https://blog.csdn.net/yuanmayuzhou/article/details/131470498
public interface Command {
void execute();
}
public class ConcreteCommand implements Command {
private Receiver receiver;
public ConcreteCommand(Receiver receiver) {
this.receiver = receiver;
}
public void execute() {
receiver.action();
}
}
public class Receiver {
public void action() {
System.out.println("执行具体操作");
}
}
public class Invoker {
private Command command;
public void setCommand(Command command) {
this.command = command;
}
public void executeCommand() {
command.execute();
}
}
public class Client {
public static void main(String[] args) {
Receiver receiver = new Receiver();
Command command = new ConcreteCommand(receiver);
Invoker invoker = new Invoker();
invoker.setCommand(command);
invoker.executeCommand();
}
}
public interface Command {
void execute();
}
public class CutCommand implements Command {
private TextEditor editor;
public CutCommand(TextEditor editor) {
this.editor = editor;
}
public void execute() {
editor.cut();
}
}
public class CopyCommand implements Command {
private TextEditor editor;
public CopyCommand(TextEditor editor) {
this.editor = editor;
}
public void execute() {
editor.copy();
}
}
public class PasteCommand implements Command {
private TextEditor editor;
public PasteCommand(TextEditor editor) {
this.editor = editor;
}
public void execute() {
editor.paste();
}
}
public class TextEditor {
public void cut() {
System.out.println("执行剪切操作");
}
public void copy() {
System.out.println("执行复制操作");
}
public void paste() {
System.out.println("执行粘贴操作");
}
}
public class Menu {
private Command cutCommand;
private Command copyCommand;
private Command pasteCommand;
public Menu(Command cutCommand, Command copyCommand, Command pasteCommand) {
this.cutCommand = cutCommand;
this.copyCommand = copyCommand;
this.pasteCommand = pasteCommand;
}
public void cut() {
cutCommand.execute();
}
public void copy() {
copyCommand.execute();
}
public void paste() {
pasteCommand.execute();
}
}
public class Client {
public static void main(String[] args) {
TextEditor editor = new TextEditor();
Command cutCommand = new CutCommand(editor);
Command copyCommand = new CopyCommand(editor);
Command pasteCommand = new PasteCommand(editor);
Menu menu = new Menu(cutCommand, copyCommand, pasteCommand);
menu.cut();
menu.copy();
menu.paste();
}
}