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);
我意识到这些例子并不完整甚至完全准确,但我希望这个想法很有帮助.
回答您的原始问题 – 是的,可以使用实用程序支持类.但是,您希望创建这些支持类并将它们映射到真实域实体.在与您的用户合作之后,您可能能够创建有意义的域名,而不仅仅是事务脚本实体.
希望这可以帮助.祝好运!
总结以上是内存溢出为你收集整理的设计模式 – 贫血领域模型是否意味着您不能将实用程序/支持类用作域模型的“帮助程序”?全部内容,希望文章能够帮你解决设计模式 – 贫血领域模型是否意味着您不能将实用程序/支持类用作域模型的“帮助程序”?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)