Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用面向对象技术在Java中实现CQRS_Java_Oop_Cqrs - Fatal编程技术网

用面向对象技术在Java中实现CQRS

用面向对象技术在Java中实现CQRS,java,oop,cqrs,Java,Oop,Cqrs,我有一个API,其中查询和实体模型的表示由同一个类表示。简化版: class Model { private Long id; private Double a; private Double b; ... } 问题是这些属性加在一起作为查询对象毫无意义。它完全不需要id,并且a,b是独占的。没有适当的分离,代码很难理解。我的计划包括为每种类型的键创建单独的查询类:A和B 不过,让我担心的是,为了避免使用instanceof(任何假定了解所有查询类型的代码),我需要在查询对象中

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

class Model {
  private Long id;
  private Double a;
  private Double b;
  ...
}
问题是这些属性加在一起作为查询对象毫无意义。它完全不需要
id
,并且
a
b
是独占的。没有适当的分离,代码很难理解。我的计划包括为每种类型的键创建单独的查询类:
A
B

不过,让我担心的是,为了避免使用
instanceof
(任何假定了解所有查询类型的代码),我需要在查询对象中实现所有横切关注点。例如,映射到
WHERE
子句作为实际
SQL
查询的一部分

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


问:既然这看起来已经够复杂了,有没有一些标准的方法来解决这类问题?欢迎使用引用和模式。

正如您所说,实现单独的查询类似乎是个好主意。GOF的战略模式可能是一个很好的起点,请参见

无法完全理解这个问题。您能提供一个更具体的例子吗?a和b在你的领域里真的是双倍的吗?