使用命令模式创建对象并将其添加到 ArrayList
Using Command- Pattern to create an object and add this to an ArrayList
我在理解练习时遇到了问题。
我要做的是:
- 不同的用户必须能够添加和删除票证
票务系统(在列表中)
- 我必须使用 Command-Design-Pattern
但我实际上不知道该怎么做。
我考虑过以下问题:
学生按下 "createTicketForinsideBuildingDamage"- 按钮
- -> 这会将 "executionCommand" 设置为 "insideBuildingDamageCommand" 并执行它
- -> 这会创建一个 "insideBuildingDamage"- class 并要求提供日期、类型、名称等数据...
- -> !!!这必须自动添加到 Ticketsystemlist 中!!!但是我该怎么做呢?
还是我完全错了?
我不想要像完整代码这样的解决方案。但是一个想法,我该怎么做。
谢谢
首先,我认为您应该了解设计模式的工作原理以及 类 之间的交互方式。您可以在此处查看示例 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()
.
调用
希望对您有所帮助!
我在理解练习时遇到了问题。 我要做的是:
- 不同的用户必须能够添加和删除票证 票务系统(在列表中)
- 我必须使用 Command-Design-Pattern
但我实际上不知道该怎么做。 我考虑过以下问题:
学生按下 "createTicketForinsideBuildingDamage"- 按钮
- -> 这会将 "executionCommand" 设置为 "insideBuildingDamageCommand" 并执行它
- -> 这会创建一个 "insideBuildingDamage"- class 并要求提供日期、类型、名称等数据...
- -> !!!这必须自动添加到 Ticketsystemlist 中!!!但是我该怎么做呢?
还是我完全错了? 我不想要像完整代码这样的解决方案。但是一个想法,我该怎么做。 谢谢
首先,我认为您应该了解设计模式的工作原理以及 类 之间的交互方式。您可以在此处查看示例 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()
.
希望对您有所帮助!