一个类Customers
实例化了许多其他类(例如CustomersFromMysql
, CustomersFromPostgeSQL
),这些类都查询返回客户名称的数据库。现在这些客户的名字回来了,例如name = "John Doe"
,我的Customers
类需要的不仅仅是name
,它还需要nameNoSpace = "JohnDoe"
和nameInvertedComma = "Doe, John"
。
我将编程一个助手类Converter
,它具有invertName(name)
和removeComma(name)
等方法。我是否会在查询数据库(CustomersFromMysql
, CustomersFromPostgeSQL
)的每个类中实例化转换器以返回所有所需的变量,或者我会在实例化类Customers
中实例化Converter
,以便当我得到返回结果时,我迭代我的列表并批量转换它们?
当然两种方法都可以,但是怎么做呢?
在这种情况下,你应该记住职责分离。与数据库相关的类应该只处理数据库特定的方面。对检索到的数据执行操作(计算)应被视为业务逻辑。因此,如果您的Customers
类已经在其中包含了一些逻辑,那么它将是放入转换例程的完美位置。然而,这实际上取决于你认为你的逻辑属于哪里。
应用一些命名约定也是有意义的。一般来说,你至少可以区分不同类型的类,就像你在问题中描述的那样:
- 数据访问对象(DAO);执行数据库操作(你的SQL类)
- 数据传输对象或实体;表示业务对象的结构
- 业务逻辑;使用dao检索DTO,根据您的需求执行一些逻辑,再次使用dao将DTO推回数据库