我有一个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()
操作的其他类(简化问题)。
问题:由于这似乎很复杂,是否有一些标准方法可以解决这类问题?参考,模式欢迎。
答案 0 :(得分:0)
正如您所说,实现单独的查询类似乎是个好主意。高尔夫的战略模式可能是一个很好的起点,见http://en.wikipedia.org/wiki/Strategy_pattern