在Java中使用OOP实现CQRS

时间:2014-06-09 19:39:43

标签: java oop cqrs

我有一个API,其中查询和实体模型的表示由同一个类表示。简化版本:

class Model {
  private Long id;
  private Double a;
  private Double b;
  ...
}

问题是这些属性一起作为查询对象没有任何意义。它不需要idab是独占的。没有适当的分离,代码很难理解。我的计划涉及为每种类型的密钥创建单独的查询类:AB

让我担心的是,为了避免使用instanceof(假设所有查询类型都知道的任何代码),我需要在查询对象中实现所有交叉问题。例如,作为实际WHERE查询的一部分映射到SQL子句。

为了避免客户端对实现具有隐式依赖性,我的初始计划是创建扩展每个POJO AB的服务器端类,并在那里实现细节。这需要额外的映射层从A映射到将实现sqlQuery()操作的其他类(简化问题)。

问题:由于这似乎很复杂,是否有一些标准方法可以解决这类问题?参考,模式欢迎。

1 个答案:

答案 0 :(得分:0)

正如您所说,实现单独的查询类似乎是个好主意。高尔夫的战略模式可能是一个很好的起点,见http://en.wikipedia.org/wiki/Strategy_pattern