设计模式(四)之命令模式

简介: 命令接口:public interface Command { public void executor();}执行命令的真正实体:public class Diablo { private int currentLevel = 0; public void skillOne() { System.out.pr

命令接口:

public interface Command {
    public void executor();
}

执行命令的真正实体:

public class Diablo {

    private int currentLevel = 0;

    public void skillOne() {
        System.out.println("百裂拳!");
    }

    public void skillTwo() {
        System.out.println("金钟罩!");
    }

    public void changeLevel(int channel) {
        this.currentLevel = channel;
        System.out.println("Diablo level is" + currentLevel + ".");
    }
}

命令一:

public class SkillOneCommand implements Command {
    private Diablo game;

    public SkillOneCommand(Diablo tv) {
        this.game = tv;
    }

    @Override
    public void executor() {
        game.skillTwo();
    }
}

命令二:

public class SkillTwoCommand implements Command {
    private Diablo game;

    public SkillTwoCommand(Diablo tv) {
        this.game = tv;
    }

    @Override
    public void executor() {
        game.skillOne();
    }
}

命令三:

public class ChangeLevelCommand implements Command {
    private Diablo game;
    private int level;

    public ChangeLevelCommand(Diablo tv, int channel) {
        this.game = tv;
        this.level = channel;
    }

    @Override
    public void executor() {
        game.changeLevel(level);
    }
}

控制器:

public class Control {
    private Command skillOne, skillTwo, changeLevel;

    public Control(Command skillOne, Command skillTwo,
            Command changeLevel) {
        this.skillOne = skillOne;
        this.skillTwo = skillTwo;
        this.changeLevel = changeLevel;
    }

    public void skillOne() {
        skillOne.executor();
    }

    public void skillTwo() {
        skillTwo.executor();
    }

    public void changeLevel() {
        changeLevel.executor();
    }
}

调用者:

public class Consumer {
    public static void main(String[] args) {
        Diablo game = new Diablo();
        Command skillTwo = new SkillTwoCommand(game);
        Command skillOne = new SkillOneCommand(game);
        Command changeLevel = new ChangeLevelCommand(game, 5);

        Control control = new Control(skillTwo, skillOne, changeLevel);
        control.skillOne();
        control.changeLevel();
        control.skillTwo();
    }
}
目录
相关文章
|
5月前
|
设计模式 UED
二十三种设计模式:解锁软件开发的神器:命令模式与撤销重做功能
二十三种设计模式:解锁软件开发的神器:命令模式与撤销重做功能
144 0
|
1月前
|
设计模式 存储 算法
Java设计模式-命令模式(16)
Java设计模式-命令模式(16)
|
2月前
|
设计模式 存储 Java
【十二】设计模式~~~行为型模式~~~命令模式(Java)
文章详细介绍了命令模式(Command Pattern),这是一种对象行为型模式,用于将请求封装成对象,实现请求发送者与接收者的解耦,从而降低系统耦合度、提高灵活性,并支持命令的排队、记录、撤销和恢复操作。通过案例分析、结构图、时序图和代码示例,文章展示了命令模式的组成部分、实现方式和应用场景,并讨论了其优点、缺点和适用情况。
|
3月前
|
设计模式 JavaScript API
js设计模式【详解】—— 命令模式
js设计模式【详解】—— 命令模式
39 6
|
4月前
|
设计模式
命令模式-大话设计模式
命令模式-大话设计模式
|
4月前
|
设计模式 Java uml
必知的技术知识:JAVA【设计模式】命令模式
必知的技术知识:JAVA【设计模式】命令模式
27 0
|
4月前
|
设计模式 Java
Java设计模式之命令模式详解
Java设计模式之命令模式详解
|
4月前
|
设计模式
设计模式之命令模式
设计模式之命令模式
|
5月前
|
设计模式 Java 调度
【设计模式系列笔记】命令模式
命令模式是一种行为设计模式,它将请求封装成一个对象,从而允许使用不同的请求、队列或日志请求参数化客户端对象,同时支持撤销操作。
59 1
|
5月前
|
设计模式 Java 调度
小谈设计模式(24)—命令模式
小谈设计模式(24)—命令模式