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: 估计是我说复杂了,呵呵 |