我的代码包含以下读/写方法来将数据写入数据库
阅读
等方法编写
等方法各种类别访问这些方法用于读写目的。请以更好的方式为我提供更好的组织方式。
我希望有一个集中的部分,我的所有读/写都会发生。
有人请帮助我选择合适的模式来组织这个。
答案 0 :(得分:2)
你可以这样做:
interface DatabaseServices {
... listing all the methods that you want to "combine"
class DatabaseServicesImpl implements DatabaseServices {
... implementing all those methods
enum DatabaseServicesProvider implements DatabaseServices {
INSTANCE;
private final DatabaseServices impl = new DatabaseServicesImpl(...
... forwarding all service calls to the impl object
上面的优点是它是“完全”单元可测试的(如果你只是创建一个枚举并在其上放置方法;你破坏了测试使用枚举的客户端的能力)。
从那里开始,您将进入现有的源代码,并丢弃当前访问数据库的所有方法;用
之类的电话替换它们DatabaseServices services = DatabaseServicesProvider.INSTANCE;
...
services.whatever()
其中:“枚举部分”在某种程度上是可选的。但是,您经常会发现您希望这些与数据库相关的服务成为中心权威(换句话说:单身人士)。枚举只是为“全局”方面提供了一个漂亮,干净的解决方案。如果你不需要一个中心实例(无论如何这实际上都是更好的事情),那就忘了那个部分。