时长:大小15.20M
作者回复: 笔记记得很好,继续努力! 状态机代码可以放在Enum。 汇率转换,可能放在单独的“转换率”对象里比较好。关于货币的其他思路没问题。
作者回复: 第1题,正如你说的,日期本质上是一个不可分割的时点。年、月、日只是一种表达方式,是表象;比如说,理论上也可以用从公元1年1月1日到现在的总日期数来表达日期。 第2题,代码写得不错,可贵的是还有单元测试。可以在Money对象里直接有一个equals()方法,这样就不用通过value()来判断相等了。
作者回复: 数据库一般不调整,在仓库转换
作者回复: EmpStatus是值对象,因此,他的becomeRegular()方法只是返回一个新的值对象,而不会改变任何现有的东西。所以emp.status.becomeRegular()并不会改变emp的任何状态。
作者回复: 领域模型是逐步演进的,遇到的时候识别就可以了。
作者回复: 比如说线程不安全
作者回复: addTwoMoney 可以改成非静态的: public Money add(Money other) { ....... //校验是同一种货币 return new Money(this.value + other.value, this.currency); }
作者回复: 是的
作者回复: 日期是时间轴上一个点,本来无所谓再分属性。年月日只是一种表示方法,还可以有其他表示法,不影响日期不可分的本质。
作者回复: 没错