命令模式

什么是命令模式

将对象中的行为抽象成具体的命令对象,通过调用者类接收不同的命令行为进行执行

示例图

图片.png

示例场景

按下键盘w s按键操作游戏人物向前 向后走

示例代码

1.创建GameCaractersReceiver游戏人物类(命令接收者)

public class GameCaractersReceiver {
    public void actionW() {
        System.out.println("游戏人物向前走");
    }

    public void actionS() {
        System.out.println("游戏人物向后走");
    }
    
}

2.创建Command命令抽象类

public abstract class Command {
    GameCaractersReceiver gameCaractersReceiver;

    public Command(GameCaractersReceiver gameCaractersReceiver) {
        this.gameCaractersReceiver = gameCaractersReceiver;
    }

      abstract void execute();
}

3.创建WCommand 向前走 SCommand向后走具体实现类

public class WCommand extends  Command {
    public WCommand(GameCaractersReceiver gameCaractersReceiver) {
        super(gameCaractersReceiver);
    }

    @Override
    void execute() {
        gameCaractersReceiver.actionW();
    }
}
public class SCommand extends Command {
    public SCommand(GameCaractersReceiver gameCaractersReceiver) {
        super(gameCaractersReceiver);
    }

    @Override
    void execute() {
        gameCaractersReceiver.actionS();
    }
}

4.创建KeyboardInvoker 键盘类(调用者)

public class KeyboardInvoker {
    public void sendActionInstruct(Command command){
        command.execute();
    }
}

5.启动类

public class Test {
    public static void main(String[] args) {
        //接收命令者-游戏人物
        GameCaractersReceiver gameCaractersReceiver = new GameCaractersReceiver();
        //调用者-键盘
        KeyboardInvoker keyboardInvoker = new KeyboardInvoker();
        //发送命令游戏人物向前走
        keyboardInvoker.sendActionInstruct(new WCommand(gameCaractersReceiver));
        //发送命令游戏人物向后走
        keyboardInvoker.sendActionInstruct(new SCommand(gameCaractersReceiver));
    }
}

6.运行结果


图片.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 目录 本文的结构如下: 什么是命令模式 为什么要用该模式 模式的结构 代码示例 优点和缺点 适用环境 模式应用 总...
    w1992wishes阅读 1,211评论 2 9
  • 一、概念 1、命令模式的动机 ​ 夏天撸串加冰啤酒简直爽翻天,我们可以通过向服务员点菜烤羊肉、烤鱼、冰啤酒等,然...
    阿饼six阅读 1,441评论 0 4
  • 原文传送门 1 介绍 命令模式属于对象的行为模式。命令模式又称为行动(Action)模式或交易(Transacti...
    dd299阅读 392评论 0 1
  • 摘自《图解设计模式》在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操...
    井底蛙蛙呱呱呱阅读 207评论 0 1
  • 描述 命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在...
    闽越布衣阅读 440评论 0 0

友情链接更多精彩内容