【问题标题】:Using Command- Pattern to create an object and add this to an ArrayList [closed]使用命令模式创建对象并将其添加到 ArrayList [关闭]
【发布时间】:2019-11-04 16:43:15
【问题描述】:

我有一个问题来理解这个练习。 我要做的是:

  1. 不同的用户必须能够添加和删除票证到一个 票务系统(在列表中)
  2. 我必须使用 Command-Design-Pattern 来做到这一点

但我实际上不知道该怎么做。 我想到了以下几点:

学生按下“createTicketForinsideBuildingDamage”-按钮

  • -> 这会将“executionCommand”设置为“insideBuildingDamageCommand”并执行它
  • -> 这会创建一个“insideBuildingDamage”类,它会要求提供日期、类型、名称等数据...
  • -> !!!并且必须自动将其添加到 Ticketsystemlist 中!!!但是我该怎么做呢?

还是我完全错了? 我不想要完整代码之类的解决方案。但是一个想法,我怎么能做到这一点。 谢谢

【问题讨论】:

  • 到目前为止你尝试了什么

标签: java command-pattern


【解决方案1】:

首先,我认为您应该了解设计模式的工作原理以及类之间的交互方式。你可以在这里看到一个例子https://refactoring.guru/design-patterns/command

我的做法:

Command.java

// concrete commands will implement this interface
// you can also use an abstract class if you want to have certain attributes, such as a TicketSystem
public interface Command { 
    // this method can be set to return something useful instead of void, if needed
    void execute();
}

AddTicketCommand.java

public class AddTicketCommand implements Command {
    // TicketSystem and Ticket attributes

    // constructor that initializes the attributes

    @Override
    public void execute() {
        // add the Ticket to the TicketSystem
    }
}

Invoker.java

public class Invoker {
    private Command command;

    public void setCommand(Command command) {
        this.command = command;
    }

    public void invoke() {
        command.execute();
    }
}

因此,当你想使用某个命令时,你需要相应地设置它。例如:invoker.setCommand(new AddTicketCommand(new TicketSystem(), new Ticket())) 然后用invoker.invoke() 调用它。

希望对您有所帮助!

【讨论】:

    猜你喜欢
    • 2016-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-20
    • 1970-01-01
    • 2023-03-22
    相关资源
    最近更新 更多