首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >DDD,PHP域对象与业务逻辑

DDD,PHP域对象与业务逻辑
EN

Stack Overflow用户
提问于 2016-08-01 09:36:47
回答 3查看 1.5K关注 0票数 8

最近我一直忙于理解ddd和模型层的概念。阅读大量的文章,例子,Q和A,花了很多时间在上面。但我还是不确定我是否有正确的原则。

其中之一就是对这个问题的回答:域对象中应该存在多少业务逻辑?一些消息来源说,域对象应该与整个业务逻辑相关联,另一方面,我遇到了一些文章,我认为它应该尽可能小,并且只代表它的值。这让我很困惑。

据我理解,域对象是类,它们表示域中的实体。

例如,让我们使用发票实体。每一张发票都由其项目组成。要计算发票价值,我们必须把所有的项目值加在一起(这是一个非常简单的例子,在现实世界中,会出现加税、计算已付价值等情况)

代码语言:javascript
复制
class Invoice
{
    public $id;
    public $items = [];
    public $status;

    const STATUS_PAID = 'paid';
    const STATUS_NOT_PAID = 'not_paid';

    public function isPaid()
    {
        return $this->status == self::STATUS_PAID;
    }

    public function getInvoiceValue()
    {
        $sum = 0;
        foreach($this->items as $item) {
            $sum += $item->value;
        }
        return $sum;
    }
}

据我理解,方法isPaid()位于正确的位置。它指的是自己的数据。但我对getInvoiceValue()并不确定。我们在这里操作其他域对象。

也许我们应该只使用域对象来表示数据,但是应该使用一些装饰器来执行更高级的任务?

提前谢谢。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38695507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档