首先要确定Order是聚合根,那么业务规则应该封装在聚合根所在的聚合中,也就是说规约模式是属于一个聚合的。
上面的步骤前后调整一下:
原来是:
3、调用商品的仓储按照商品名或id查询并返回相应的商品对象
4、调用折扣信息的仓储按照该商品的类型查询并返回布尔值
5、调用Order的工厂方法,创建一个新的Order对象
6、调用下单的业务方法并将account与order对象传进去
调整为:
3、调用Order的工厂方法,创建一个新的Order对象
4、调用Order的下单的业务方法并将account与order对象传进去
5. Order的下单方法中,首先执行下单前业务规则检查,也就是规约模式,将业务规则检查(可以使用SQL这样的DSL)发消息给仓储层。
6、调用折扣信息的仓储按照该商品的类型查询并返回布尔值消息给Order。