一个业务模型的设计(一)

来源:互联网 发布:如何在sql创建表 编辑:程序博客网 时间:2024/05/16 11:46

最近接触了一个网站,设计者将业务对象建摸为一个EntityBase为基类的SimpleEntity和ComplexEntity两类,而SimpleEntity自身拥有很多Property, ComplexEntity又由很多Profile类聚和而成,每个Profile有许多Property。最特别的,ComplexEntity与Profile对象之间的归属关系是由Profile对象的一个属性关联起来的。

对于这种设计,看起来是非常灵活,但是我个人是持保留意见的。原因有如下三点:

一、业务对象之间的复杂关系是应该尽量避免的,而此处将一个业务对象拆解成多个Profile似乎更加剧了类关系的复杂和类数量的膨胀。

二、由Profile对象的一个属性关联ComplexEntity类,而不是由ComplexEntity类直接包含Profile对象集合,这样获取整个对象(包含Profile和ComplexEntity)似乎只能通过反射,这样的话效率也许有问题(没有经过论证)。

三、将一个逻辑对象的属性分散为N个Profile对象中(经过NHibernate持久化以后,将会是N个数据表),跨Profile对象的属性查询效率可能会受到影响。

为了一些灵活性,而引起上述三个不算轻微的问题,这种设计到底如何?

原创粉丝点击