java - 最佳实践 : String converting batch in instantiating class or capsulated in every instantiated class

标签 java

一个类Customers实例化许多其他类(例如CustomersFromMysqlCustomersFromPostgeSQL),所有查询数据库都返回客户名称。现在,这些客户名称返回为例如 name = "John Doe",但我的 Customers 类需要的不仅仅是 name,它还需要 nameNoSpace = "JohnDoe"nameInvertedComma = "Doe, John"

我会编写一个辅助类Converter,它具有invertName(name)removeComma(name)等方法。我是否会在查询数据库的每个类(CustomersFromMysqlCustomersFromPostgeSQL)中实例化转换器以返回所有必需的变量,还是会在实例化类Customers中实例化Converter,以便当我返回结果时,我会迭代列表并批量转换它们?

当然两者都可以,但是该怎么做呢?

最佳答案

在这种情况下,您应该记住职责分离。与数据库相关的类应该只处理数据库特定的方面。对检索到的数据执行操作(计算)应视为业务逻辑。因此,如果您的 Customers 类中已经有一些逻辑,那么它将是放置转换例程的完美位置。尽管如此,这实际上取决于你认为你的逻辑属于哪里。

应用一些命名约定也可能有意义。一般来说,您至少可以区分不同类型的类,以防像您在问题中描述的那样:

  1. 数据访问对象(DAO);执行数据库操作(您的 SQL 类)
  2. 数据传输对象 (DTO) 或实体;代表您的业务对象的结构
  3. 业务逻辑;使用DAO检索DTO,根据您的要求执行一些逻辑,再次使用DAO将DTO推回数据库

关于java - 最佳实践 : String converting batch in instantiating class or capsulated in every instantiated class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6718859/

相关文章:

java - 我应该如何命名 java.util.Map?

java - 如何在java中快速将大的csv文件转换为json数组

java - 我应该如何处理获取实时数据、将其存储在 Java 类型中以及绘制实时图表?

java - 在不同的应用程序中写入和读取 Cookie

java - 上传文件时出现不支持的媒体类型错误(带有 jersey 的 Restful Web 服务、netbeans 中的 java)

java - 'integer + ""' 是在 Java 中将整数转换为字符串的好方法吗?

java - 在 Edittext 中输入日期时间后,如何为我的任务创建通知剩余内容

java - 如何在方法调用期间使用同一类的两个对象?

java - JSNI 包装对象

java - 安装 WAS 8.5 插件后 Eclipse 市场无法运行