在我的项目中组织读/写操作的更好方法

时间:2016-07-06 13:38:07

标签: java design-patterns

我的代码包含以下读/写方法来将数据写入数据库

阅读

等方法
  1. public byte [] readFile(arg1)
  2. public byte [] readFile(arg1,arg2)
  3. public InputStream readFile(arg1,arg2)
  4. public MyStream readFile(arg1,arg2)
  5. public byte [] readFile(arg1,arg2,arg3)
  6. 编写

    等方法
    1. public String [] writeFile(arg1)
    2. public String [] writeFile(arg1,arg2)
    3. public MyStream writeFile(arg1,arg2) - >文件是从这个输出的流中写的
    4. public String [] writeFile(arg1,arg2,arg3)
    5. 各种类别访问这些方法用于读写目的。请以更好的方式为我提供更好的组织方式。

      我希望有一个集中的部分,我的所有读/写都会发生。

      有人请帮助我选择合适的模式来组织这个。

1 个答案:

答案 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()

其中:“枚举部分”在某种程度上是可选的。但是,您经常会发现您希望这些与数据库相关的服务成为中心权威(换句话说:单身人士)。枚举只是为“全局”方面提供了一个漂亮,干净的解决方案。如果你不需要一个中心实例(无论如何这实际上都是更好的事情),那就忘了那个部分。