我正在使用我使用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
类型,您只会使用它,但是您并非如此。
或我应该将所有这些属性和业务逻辑方法直接放在车辆类中?
如果VehicleTechnicalStatus
在Vehicle
实体之外使用 - 特别是,如果您期望将车辆理化为参数将其传递给某些功能,那么您可能想将其视为包封的类型,,与车辆财产袋不同。您会失去一些复杂性(两个不同的模块,而不是一个大的模块),但是您会在上下文上获得收益 - 当您掌握技术状态时,您可以将重点完全留在那里,而不会分散车辆中其他无关的领域。