Java 在我的项目中组织读/写操作的更好方法
我的代码包含以下将数据写入数据库的读/写方法 读取类似的方法Java 在我的项目中组织读/写操作的更好方法,java,design-patterns,Java,Design Patterns,我的代码包含以下将数据写入数据库的读/写方法 读取类似的方法 公共字节[]读取文件(arg1) 公共字节[]读取文件(arg1、arg2) 公共输入流读取文件(arg1、arg2) 公共MyStream读取文件(arg1、arg2) 公共字节[]读取文件(arg1、arg2、arg3) 编写类似的方法 公共字符串[]写文件(arg1) 公共字符串[]写文件(arg1、arg2) 公共MyStream writeFile(arg1,arg2)->文件是从这个输出流写入的 公共字符串[]写文件(ar
有人请帮我选择一个合适的模式来组织好这件事。你可以这样做:
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()
其中:“枚举部分”在某种程度上是可选的。但是,您经常会发现,您希望这种与数据库相关的服务成为中央权威(换句话说:一个单例)。Enum只是为“全局”方面提供了一个好的、干净的解决方案。如果你不需要一个中心实例(这实际上是一件更好的事情),那就忘了这一部分。你的方法是在内部同步的吗?不,Coderino Javarino,它们不是调用这些方法的类,它们遵循单例模式。因此,我认为它们不需要同步。我清楚了吗?Jägermeister我不清楚代码的枚举部分。如果你能再多给我解释一点,我会很有帮助的1.我有点怀疑。。请向我澄清以下内容,以便我能将你的回答标记为已接受。。在上面的示例中,相对于类使用enum有什么优势?要访问这个枚举方法,我们必须像
enumName.INSTANCE.methodName()
那样,而如果我们在上面的示例中使用class,我们可以访问像classObj.methodName()
这样的方法。。。哪一个是有效的class
或enum
以及为什么?您根本不关心这里的效率。这都是关于“可读性”和设计方面的。如果有差异的话,它们将在纳秒范围内。在这里,你不应该浪费一秒钟去思考性能。