关于面向对象的困惑!

一个统计类的需求:商店经理要统计某段时间内各类商品的销售情况。
若按照面向对象的设计,类的关系应类似于:商店知道订单,订单知道订单项,订单项被商品说明描述,商品说明中的商品类别被(商品类别类)描述。
在处理上面的统计需求时,我搞不清该如何进行设计了。
若采用面向数据的设计当然一个稍微复杂点的sql语句就解决了。
困惑中……,请各位指点。谢谢!

在处理上面的统计需求时,若按照面向对象的设计是不是这个统计功能的职责应该是商店类来处理,商店类查询出某段时间内所有的销售订单,订单类得到它的订单项,订单项查询商品说明,商品说明查询商品类别说明,所有的信息都生产后再对其进行分析得到各类商品的销售统计。
是不是很麻烦?

>类的关系应类似于:商店知道订单,订单知道订单项,订单项被商品说明描述,商品说明中的商品类别被(商品类别类)描述。
基本正确。

>若按照面向对象的设计是不是这个统计功能的职责应该是商店类来处理
这个统计功能归于商店类也不合适,因为不是商店类自己去统计,而是商店经理去执行统计,这里有一个角色商店经理,如果我们画一个四色原型图就会对这个问题有了深入的认识。

这个统计功能既然不适合商店类,也不适合在订单类中实现,因为一个事物不能自己统计自己啊,按照Evans DDD来看,这个统计功能应该在服务中实现。

实现一个服务接口,具体实现尽量不要涉及数据表名,可以使用Evans DDD中的repositoy和筛选方式进行完成,如果使用Hibernate就更好,使用Hibernate SQL实现。