如何在命令设计模式中处理每个具体命令中的多个请求?

时间:2016-04-19 09:20:44

标签: oop design-patterns factory-pattern command-pattern

我想在我的一个项目中使用命令模式,我必须在其中进行多个REST调用。我根据它所属的模块封装了Web方法调用。像XYZDataManager一样包含与XYZ模块相关的所有Web方法调用。

话虽如此,Command模式如何适应这里?我不想为每个Web方法调用创建命令类。我想保留上面提到的封装。

我想到的一个想法是在每个具体的Command类中创建一些类似于RequestType的枚举。然后我们在Command接口中执行(RequestType)方法。每个具体命令相应地实现execute(RequestType)并调用由RequestType参数决定的内部方法。

我做对了吗?或者可以有更好的方法?或者在这里使用命令模式完全是一种浪费?

将完整的请求创建(包括RequestType和使用哪个具体命令)留给消费者代码一个好主意?或者是否应该将其移动到从消费者代码中抽象出来的Factory方法?

2 个答案:

答案 0 :(得分:1)

命令模式用于将命令的生成/调用与其执行分开。它不适合REST服务器的上下文。使用REST协议会使命令模式变得多余:REST协议本身将调用与执行分开。

使用命令模式的典型位置是多线程和具有GUI的单片应用程序。它不适合多处理。 REST可以在多处理环境中使用。

答案 1 :(得分:1)

我在java Web服务中使用了REST并使用了命令模式。 在我的使用中,我有一个Resource类,它暴露了所有REST端点(GET,POST,PUT,DELETE)。这些端点的方法根据用法调用不同的命令。

例如:一个名为GetUserDataCommand类的GET方法......

因此命令模式用于封装动作,但每个端点只有一个资源类(例如UserResource)(例如/ user)。

相关问题