我想在我的一个项目中使用命令模式,我必须在其中进行多个REST调用。我根据它所属的模块封装了Web方法调用。像XYZDataManager一样包含与XYZ模块相关的所有Web方法调用。
话虽如此,Command模式如何适应这里?我不想为每个Web方法调用创建命令类。我想保留上面提到的封装。
我想到的一个想法是在每个具体的Command类中创建一些类似于RequestType的枚举。然后我们在Command接口中执行(RequestType)方法。每个具体命令相应地实现execute(RequestType)并调用由RequestType参数决定的内部方法。
我做对了吗?或者可以有更好的方法?或者在这里使用命令模式完全是一种浪费?
将完整的请求创建(包括RequestType和使用哪个具体命令)留给消费者代码一个好主意?或者是否应该将其移动到从消费者代码中抽象出来的Factory方法?
答案 0 :(得分:1)
命令模式用于将命令的生成/调用与其执行分开。它不适合REST服务器的上下文。使用REST协议会使命令模式变得多余:REST协议本身将调用与执行分开。
使用命令模式的典型位置是多线程和具有GUI的单片应用程序。它不适合多处理。 REST可以在多处理环境中使用。
答案 1 :(得分:1)
我在java Web服务中使用了REST并使用了命令模式。 在我的使用中,我有一个Resource类,它暴露了所有REST端点(GET,POST,PUT,DELETE)。这些端点的方法根据用法调用不同的命令。
例如:一个名为GetUserDataCommand类的GET方法......
因此命令模式用于封装动作,但每个端点只有一个资源类(例如UserResource)(例如/ user)。