Language agnostic 为插入和保存创建单独的类

Language agnostic 为插入和保存创建单独的类,language-agnostic,Language Agnostic,这是个好主意吗?不要用两种方法(insert和update)和两种验证方法(validateInsert和validateUpdate)创建一个类,而是创建三个类:一个称为ProductDB,另一个ProductInsert(使用方法insert和Validate)和另一个ProductUpdate(使用与ProductInsert相同的方法) 这更具可读性、灵活性和可测试性吗?这听起来像是一个独立于语言的问题。我只需要创建一个类并将其称为产品,并在类中拥有适当的方法。想想当实际实例化单独的对象

这是个好主意吗?不要用两种方法(
insert
update
)和两种验证方法(
validateInsert
validateUpdate
)创建一个类,而是创建三个类:一个称为
ProductDB
,另一个
ProductInsert
(使用方法insert和Validate)和另一个
ProductUpdate
(使用与ProductInsert相同的方法)


这更具可读性、灵活性和可测试性吗?

这听起来像是一个独立于语言的问题。我只需要创建一个类并将其称为产品,并在类中拥有适当的方法。想想当实际实例化单独的对象时会是多么混乱(除非您有静态方法)

还有一个具体的产品类将允许您存储特定于对象的信息

例:

Product myProduct=新产品()

myProduct.name=“肉桂吐司脆饼”

myProduct.price=3.99


在我看来,使用单独的类会降低代码的可读性和可测试性。

PaulG的回答更倾向于传统的域对象模式,我不赞成这种模式。就我个人而言,我倾向于为每个进程使用单独的类(如ProductInsert和ProductUpdate)。这类似于我们在简单的银行示例中看到的情况,其中存款是一个类的实例,而不是BankAccount类上的方法。当您开始考虑包含更多内容的业务流程时,例如要执行的规则和操作以及操作本身的审核/持久性(例如,跟踪插入的ProductInsert表),您越是意识到业务流程本身应该是一等公民