【发布时间】:2018-05-08 14:27:04
【问题描述】:
遵循 DDD 实践,值对象的实现是否应该被密封?
想象一下有一些抽象的ValueObject<T> 和作为Money : ValueObject<Money> 给出的具体实现。我应该盖章Money 吗?
public class Money : ValueObject<Money>
{
private Money()
{
}
private Money(decimal value, string currency)
{
Requires.NotEmpty(currency, nameof(currency));
Requires.That(value >= 0, $"{nameof(value)} must be greater or equals to 0.");
Value = value;
Currency = currency.ToUpper();
}
public decimal Value { get; private set; }
/// <summary>
/// <a href="http://currencysystem.com/codes/">ISO 4217</a> currency code
/// </summary>
public string Currency { get; private set; }
public static Money Dkk(decimal value) => new Money(value, "DKK");
public static Money Usd(decimal value) => new Money(value, "USD");
}
【问题讨论】:
标签: oop domain-driven-design value-objects