Design patterns 类似请求-响应的设计模式

Design patterns 类似请求-响应的设计模式,design-patterns,request,response,Design Patterns,Request,Response,我需要设计一个使用请求并生成响应的服务。在结构方面,我希望响应实质上响应请求,并且还包括一个状态 e、 g 请求: class Request { String x; String y; } class Response { String x; Status x_s; String y; Status y_s; } 有人知道描述这一点的模式吗?一种解决方案可以是使用相同的对象来表示请求和响应,此外还可以使用一个封装值和状态的对象,例如 class Attr { Status status;

我需要设计一个使用请求并生成响应的服务。在结构方面,我希望响应实质上响应请求,并且还包括一个状态

e、 g

请求:

class Request {
String x;
String y;
}

class Response {
String x;
Status x_s;
String y;
Status y_s;
}
有人知道描述这一点的模式吗?一种解决方案可以是使用相同的对象来表示请求和响应,此外还可以使用一个封装值和状态的对象,例如

class Attr {
 Status status;
 String value;
}

class RequestResponse {
Attr x;
Attr y;
}
  • 但这感觉有点笨拙。例如,RequestResponse.attr.status仅适用于响应
  • 注意,就impl/用法而言,如果请求/响应的结构相同,则内容实际上会有所不同。我正在尝试实现语言翻译服务
谢谢。

为什么不呢

public class Response {
    private Request request; // Has-a relationship
    private Status x_s;
    private Status y_s;
}
除了任何设计优点之外,这还有一个额外的好处,即“重用”已为请求分配的内存。它还允许您在生成/处理响应时使用Request类中定义的功能,如Request.getRequestType()或类似内容

另一种解决方案是让响应从请求继承(is-a关系),但组合方法通常更好,为什么不呢

public class Response {
    private Request request; // Has-a relationship
    private Status x_s;
    private Status y_s;
}
除了任何设计优点之外,这还有一个额外的好处,即“重用”已为请求分配的内存。它还允许您在生成/处理响应时使用Request类中定义的功能,如Request.getRequestType()或类似内容


另一种解决方案是让响应从请求继承(is-a关系),但组合方法通常更好。ur模型是否为客户端提供了一种干净的方法来确定哪个状态字段与哪个请求字段相关。也就是说,“response.request.x_value”与“response.x_status”的关系如何。对于clean,我想我的意思是以一种类型安全的方式,不使用反射。为什么它会有相同的值?它不会有相同的值。不过,这些属性将是相关的。一个包含一个值,另一个包含该值的状态。您可以将状态引用到它所应用的请求字段中。这有它的缺点;您正在增加耦合,这通常应该避免。无论你以何种方式切割它,你所选择的设计都会有折衷,如果不知道你在做什么,我真的无法给出建议,哪种折衷更好。您可能需要考虑从更高的层次重新设计。谢谢。ur模型是否为客户端提供了一种干净的方法来确定哪个状态字段与哪个请求字段相关。也就是说,“response.request.x_value”与“response.x_status”的关系如何。对于clean,我想我的意思是以一种类型安全的方式,不使用反射。为什么它会有相同的值?它不会有相同的值。不过,这些属性将是相关的。一个包含一个值,另一个包含该值的状态。您可以将状态引用到它所应用的请求字段中。这有它的缺点;您正在增加耦合,这通常应该避免。无论你以何种方式切割它,你所选择的设计都会有折衷,如果不知道你在做什么,我真的无法给出建议,哪种折衷更好。您可能需要考虑从更高的层次重新设计。