首页 > 解决方案 > 方法是否属于存储库模式?

问题描述

在一个具体的存储库类中,我有三种方法:

  1. 从数据库中获取一些数据的两种方法。我们可以称它们为AB
  2. 最后一个方法(名为C)执行AB,只对它们操作几个条件并返回数据。

这是一个例子:

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包含零查询并执行一些内部方法。

您如何看待这种“感觉”?有什么解决办法?

非常感谢您尝试帮助我。

标签: javastructurerepository-pattern

解决方案


我更喜欢只有在存储库类的数据库中存储和检索数据的方法。

如果我需要做一些其他操作,我定义一个使用存储库的“服务”类。

有了这个方法,如果我需要编写一个新的存储库来从不同的数据库中获取数据,我应该只定义获取数据的方法(methodAmethodB),逻辑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;
    }

}

推荐阅读