所在位置:答疑 - 内容   
客户信息这个对象,系统向用户提供扩展属性的定义
 

2008-7-17  16:43:00  susanyangcn:  有个采用类似petshop 架构的项目,分实体/表示/Bll/Dal 四层 
2008-7-17  16:44:06  susanyangcn:  对于一个"角户"这个对象而言,是不是对应要有至少四个类呢? 
2008-7-17  16:44:19  susanyangcn:  "角户"-》"用户" 
2008-7-17  16:45:35  susanyangcn:  或者说,对于每个业务中的对象,要采用这种架构的话,每个对象需要对应到四个类上 
2008-7-17  16:45:54  susanyangcn:  不知道我表达清楚没,呵呵 
2008-7-17  16:46:31  潘:  是啊,如果采用这种分层方式的话 
2008-7-17  16:47:08  susanyangcn:  还有个问题,这些类之间都是什么关系呢 
2008-7-17  16:47:37  susanyangcn:  我在画图过程中,发现层与层之间都是依赖关系 
2008-7-17  16:48:16  susanyangcn:  聚合、组合、关联、泛化这几种关系都只有在实体层会有体现 
2008-7-17  16:48:24  susanyangcn:  不知道我的理解有没有问题 
2008-7-17  16:49:01  潘:  是 
2008-7-17  16:50:06  潘:  但这样做很容易偏离面向对象的初衷,可能很多逻辑放在BLL 里了 

2008-7-17  16:50:38  susanyangcn:  是的,逻辑一般都是在bll 里 
2008-7-17  16:51:49  susanyangcn:  在.NET 的平台上,您有什么推荐的框架吗?可以很好地体现面向对象的思想 
2008-7-17  16:57:09  潘:  要实现逻辑放在实体中,需要好的ORM 框架,.NET 应该是缺乏的,开源的有NHibernate Castle 之类。 
2008-7-17  16:58:09  潘:  新的ADO.NET 实体框架不知道怎样,我不了解

2008-7-17  16:58:47  susanyangcn:  嗯,谢谢,有时间好好学习一下 
2008-7-17  16:59:19  susanyangcn:  petshop 的架构比较简单,项目比较紧张,所有选择了这个 
2008-7-17  17:01:13  susanyangcn:  对了,一个小问题,用户和部门的关系是关联还是聚合呢?网上看到一些资源有说是关联的,有说是聚合的。有的时候,关联和聚合有点分不清。 
2008-7-17  17:01:57  潘:  没有明显的特征一定要用聚合的话,应该先用普通关联 
2008-7-17  17:02:28  潘:  聚合是要改变责任分配的

2008-7-17  17:03:26  susanyangcn:  嗯,记下了 
2008-7-17  17:07:16  susanyangcn:  另一个小问题,比如客户信息这个对象,系统向用户提供扩展属性的定义,那客户信息、扩展属性、属性值之间的关系怎么在类图中表示呢? 
2008-7-17  17:08:30  潘:  客户信息不适合做类名吧,应改为客户。参见umlchina_class.pdf,分析模式的物品模式部分。 
2008-7-17  17:08:49  susanyangcn:  嗯,改为"客户" 
2008-7-17  17:09:15  潘:  客户-客户类别 || 属性值-类别特征 
2008-7-17  17:09:19  潘:  四个类

2008-7-17  17:09:42  susanyangcn:  客户没有分类呢 
2008-7-17  17:10:52  潘:  如果不分类,就不存在什么扩展属性了吧,放在一起不就行了吗 
2008-7-17  17:11:32  潘:  正是因为有的需要扩展这些,有的需要扩展哪些,才会出来一个扩展×× 

2008-7-17  17:11:43  susanyangcn:  所属的扩展属性指的是不是系统中默认提供的,是用户根据需要自定义添加的 
2008-7-17  17:13:41  潘:  客户-扩展属性-用户 \/ 属性值 
2008-7-17  17:14:56  susanyangcn:  扩展属性又会组合成属性组,一个组可以有多个扩展属性,每个扩展属性又可以属于多个组 
2008-7-17  17:15:38  susanyangcn:  之所以会分组,是因为对扩展属性的使用是以组为单位成行权限设置的 
2008-7-17  17:18:46  susanyangcn:  属性组只是扩展属性的一个逻辑组合,只是为了进行统一的权限控制 
2008-7-17  17:30:05  潘:  那不就是类别嘛 
2008-7-17  17:31:04  susanyangcn:  类别与类别特征一般都是1 对多的吧? 
2008-7-17  17:43:39      susanyangcn 发送 3w1286.tmp.jpg 
2008-7-17  17:43:41  susanyangcn:  是这样? 
2008-7-17  18:27:02  潘:  差不多吧。客户和属性组是多对多? 
2008-7-17  18:28:13  susanyangcn:  实际上,每个客户都会有多个属性组,只有在权限作用下,某些用户只能使用客户的部分属性组 
2008-7-17  18:30:01  susanyangcn:  或者说,管理员定义了几个属性组,客户就有几个属性组,只是由于属性组上设有权限,所有有些用户只能使用(浏览/赋值)到部门的属性组 
2008-7-17  18:30:18  susanyangcn:  部门-》部分 
2008-7-17  18:30:25  susanyangcn:  呵呵,错字比较多,不好意思 
2008-7-17  18:30:50  潘:  权限是另一种知识了,和这个是不影响的 
2008-7-17  18:31:16  susanyangcn:  那客户和属性组就是1 对多的关系 
2008-7-17  18:32:07  susanyangcn:  所有的客户的属性组都是一样多的 
2008-7-17  18:34:12  潘:  所有的客户的属性组都是一样多的? 
2008-7-17  18:35:00  susanyangcn:  是的 
2008-7-17  18:35:32  susanyangcn:  所以还不是分类的概念 
2008-7-17  18:35:59  潘:  其实爱怎么建模都可以的,区别在于哪一种反映出业务内涵。这样才能随着业务的规律变化。 
2008-7-17  18:36:32  潘:  属性组是随意定的,怎么还会一样多 

2008-7-17  18:36:58  susanyangcn:  嗯,这个是最高境界:) 
2008-7-17  18:37:34  susanyangcn:  属性组是管理员定的,定完了,所有的客户都有这个属性(组)了啊。相当于自定义表单? 
2008-7-17  18:37:58  susanyangcn:  不知道是不是被我说麻烦了 
2008-7-17  18:38:38  潘:  自定义表单也不会要求个数一样多啊,我喜欢分六组,他喜欢分四组,怎么不行呢,背后的业务规则是什么 
2008-7-17  18:40:07  潘:  所谓扩展属性是否类似于QQ,MSN,手机,博客,基金账户。。。之类可能之前没有以后有的? 

2008-7-17  18:40:33  susanyangcn:  是的 
2008-7-17  18:41:22  潘:  怎么会"所有的客户的属性组都是一样多",是不是预先设置了若干个空白字段, 组1,组2.... 
2008-7-17  18:41:43  susanyangcn:  不是空白的,是后生成的 
2008-7-17  18:42:13  susanyangcn:  生成后,所有客户的属性就是一样多的了啊。 
2008-7-17  18:43:56  潘:  :'(不理解 
2008-7-17  18:44:08  susanyangcn:  对于客户,系统提供了默认的属性:姓名、电话。管理员后来又新增加了一些属性:地址、QQ 号之类的属性。 
2008-7-17  18:44:23  susanyangcn:  这些由管理员新增加的属性就是扩展属性 
2008-7-17  18:44:44  潘:  然后呢 
2008-7-17  18:46:01  susanyangcn:  一般的用户在添加客户的时候,除了要填写姓名、电话信息外,也要填写地址、qq 号 
2008-7-17  18:47:14  susanyangcn:  或者说,我们在设计系统的时候考虑不全客户的所有属性,就给用户提供了让他们自定义(添加)客户属性的功能。 
2008-7-17  18:47:40  susanyangcn:  估计是我说复杂了,呵呵