设计模式----命令模式

本文介绍了Java中的命令模式,包括Command接口、ConcreteCommand类、Receiver、Invoker和TextEditor等组件的使用,展示了如何通过命令模式将操作逻辑解耦并封装在不同的命令对象中。
摘要由CSDN通过智能技术生成

转载: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();
    }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值