java - 方法是否属于存储库模式?
问题描述
在一个具体的存储库类中,我有三种方法:
- 从数据库中获取一些数据的两种方法。我们可以称它们为A和B。
- 最后一个方法(名为C)执行A和B,只对它们操作几个条件并返回数据。
这是一个例子:
public Object A() { return data; }
public Object B() { return data; }
public Object C() {
Object dataFromA = A();
if (dataFromA == null && /* some conditions */)
return B();
return dataFromA;
}
当我看C方法时,感觉它不必属于repository类。其背后的唯一原因是因为方法C包含零查询并执行一些内部方法。
您如何看待这种“感觉”?有什么解决办法?
非常感谢您尝试帮助我。
解决方案
我更喜欢只有在存储库类的数据库中存储和检索数据的方法。
如果我需要做一些其他操作,我定义一个使用存储库的“服务”类。
有了这个方法,如果我需要编写一个新的存储库来从不同的数据库中获取数据,我应该只定义获取数据的方法(methodA
和methodB
),逻辑methodC
保持不变。
class Repository {
Object methodA() {
return data;
}
Object methodB() {
return data;
}
}
class Service {
private Repository repo;
Object getA() {
return repo.methodA();
}
Object getB() {
return repo.methodB();
}
Object methodC(){
Object dataFromA = repo.methodA();
if (dataFromA == null && /* some conditions */)
return repo.methodB();
return dataFromA;
}
}
推荐阅读
- javascript - 单击具有多个元素但单独的数组上的事件
- php - 显示用户时区模型的所有日期(Laravel)
- python - 如何从熊猫数据框中创建一个字典?
- docker - 将新节点添加到通过 docker-compose 创建的 elasticsearch 集群
- c++ - 类的动态分配
- r - 在另一个字段上使用正则表达式在 R data.table 中创建新字段
- python - 写入大型 CSV - 内存使用与随机磁盘访问
- ruby-on-rails - Trix 所见即所得编辑器更改文本字段的默认行/垂直高度
- c++ - OpenGL C++、立方体贴图、顶点着色器
- ios - 无法使用 NSUserDefaults 保存整数