设计模式 – 贫血领域模型是否意味着您不能将实用程序支持类用作域模型的“帮助程序”?

设计模式 – 贫血领域模型是否意味着您不能将实用程序支持类用作域模型的“帮助程序”?,第1张

概述根据 this definition,福勒的贫血领域模型概念是: a software domain model where the business logic is implemented outside the domain objects 和 With this pattern, logic is typically implemented in separate classes whic 根据 this definition,福勒的贫血领域模型概念是:

a software domain model where the
business logic is implemented outsIDe
the domain objects

With this pattern,logic is typically
implemented in separate classes which
transform the state of the domain
objects. Fowler calls such external
classes transaction scripts.

如果我们以购物车为例,Cart对象将是域对象.但是要处理购物车到最终订单和收据涉及检查订单库存和处理xyk付款.很多这些东西都需要实用程序类,因为在Cart对象中做所有 *** 作都意味着Cart类会很庞大而且很麻烦.那么,这是否意味着本例中的Cart将是一个贫血域模型,根据上面的定义,这些实用程序类将是“事务脚本”?

解决方法 领域驱动设计的一个关键概念是创建一个丰富的设计,传达和反映其领域专家(业务用户)的行话.然后,您希望代码成为该域模型的表达式. (参见 DDD Patterns summaries中的“普适语言”和“模型驱动设计”).

执行此 *** 作时,您将为实体(类)创建反映业务用户如何描述它们的名称.此外,您将在那些也反映域的类上创建方法.

考虑到这一点,考虑您对“助手”或“实用程序”类的看法可能会有所帮助.使用您的一些描述,您可能有类和方法,例如:

product = GetProduct(data.productID);shopPingCart.add(product);receipt = customer.Purchase(shopPingCart);

您的Customer.Purchase方法可能会执行以下 *** 作:

creditCard = this.getCreditCart(creditCardNumber);purchaseNumber = creditCard.Charge(shopPingCart.Total);

我意识到这些例子并不完整甚至完全准确,但我希望这个想法很有帮助.

回答您的原始问题 – 是的,可以使用实用程序支持类.但是,您希望创建这些支持类并将它们映射到真实域实体.在与您的用户合作之后,您可能能够创建有意义的域名,而不仅仅是事务脚本实体.

希望这可以帮助.祝好运!

总结

以上是内存溢出为你收集整理的设计模式 – 贫血领域模型是否意味着您不能将实用程序/支持类用作域模型的“帮助程序”?全部内容,希望文章能够帮你解决设计模式 – 贫血领域模型是否意味着您不能将实用程序/支持类用作域模型的“帮助程序”?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1076687.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存