简单的车辆DDD型号 - 为ValueObject TechIncal状态



我正在使用我使用Vehicle模型的某些PHP应用程序。

该模型应包含一些数据,并且可能有关车辆控件,排放控制和一些常规服务的逻辑。这是代码:

class Vehicle extends Entity {
    protected $name;
    protected $registrationNumber;
    protected $registrationCountry;
    protected $seatsCapacity;
    protected $obtainDate;
    protected $color;
    protected $comment;
    protected $naviSerialNumber;
    protected $fuelCardNumber;
    protected $techicalStatus;
    protected $transferStatus;
    protected $ownership;
}

$technicalStatus应该是这样类的实例:

class VehicleTechnicalStatus extends ValueObject {
    protected $tachoValue;
    protected $vehControlDate;
    protected $vehControlValidDue;
    protected $emissControlDate;
    protected $emissControlValidDue;
    protected $lastRegServiceTachoValue;
    protected $lastRegServiceDate;
    protected $serviceInterval;
}

当然,它将包含有关车辆控制日期,服务等的逻辑。

使这样的类A级ValueObject正确吗?它没有任何身份,但是在Vehicle中,它会经常更改(替换为ValueObject,应该是不可变的)。

它是正确的设计吗?还是我应该将所有这些属性和业务逻辑方法直接放置到Vehicle类?

使这样的类值成为值?它没有任何身份,但在车辆中会经常更改(替换为价值对象,应该是不可变的)。

是。从根本上讲,价值对象是由其他特定域类型和域的不可知论组成的特定域类型

也要说:如果PHP具有本机VehicleTechnicalStatus类型,您只会使用它,但是您并非如此。

或我应该将所有这些属性和业务逻辑方法直接放在车辆类中?

如果VehicleTechnicalStatusVehicle实体之外使用 - 特别是,如果您期望将车辆理化为参数将其传递给某些功能,那么您可能想将其视为包封的类型,,与车辆财产袋不同。您会失去一些复杂性(两个不同的模块,而不是一个大的模块),但是您会在上下文上获得收益 - 当您掌握技术状态时,您可以将重点完全留在那里,而不会分散车辆中其他无关的领域。

相关内容

  • 没有找到相关文章

最新更新