|
问题:bookCount应该如何设计。
说明:
现在有需求查询各级分类中书籍的数量bookCount。
由于分类下不断增加子分类,现在想查询最顶层的分类中的书籍数量,需要遍历顶级分类的所有子分类并递归,最后求和,效率比较低下。
查询和增加Book都比较频繁。
请教这种情况应该如何设计,是否应该把bookCount设计在Category中并在增加Book时更新分类及所有父级分类?或有更好的方法查询这种分类树。
|
个人感觉在新增和查询比较频繁的情况下可以这么做,对于增加Book时更新分类及所有父级分类,可以放在事件里面在,让它自动触发执行
至于是否当成值对象,我觉得没有必要这样教条,只要使用模式来参与实现,具有一定解耦性就是适当设计了,DDD也说没有设计准则和定理,所以,你也不能拿DDD本身概念往上靠。这些都是范了形式主义倾向。
不是在DB级别处理,是你在BookService里面调用DAO或Repository里持久化完Book后触发Category的方法,完成状态的更新。
class Category{
Category parent;
List
CategoryState state;
public incBookCount(){
state.incCount();
parent.incBookCount();
}
}
class CategoryState{
int bookCount=0;
public incCount(){
bookCount++;
}
}