预览加载中,请您耐心等待几秒...
1/9
2/9
3/9
4/9
5/9
6/9
7/9
8/9
9/9

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

对象关系在模型中的实现案例 —基础软件部吴春云 一、案例介绍: 在一个项目中,存在多个业务对象,各个业务对象间存在各种关系。从结构上来看,对象关系可以分为依赖、继承、关联、聚合、组合,从数量上来看,对象关系可以分为一对一、一对多、多对多。本案例主要介绍如何在开发中通过代码来表示对象间的各种关系,并基于这种关系进行前后端数据交互及持久化。 二、关系的概念及实现: 1.结构关系 1.1继承 继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力。所以继承关系,确切的说是类与类之间的关系,但是对象又是类的实例,所以就这个角度理解为对象之间的关系,例如父与子的关系,动物与狗的关系,汽车与大众的关系等。 工作流结构部分的实体类:SysNode(环节)、SysTransactNode(办理环节)、SysActivityNode(活动环节)、SysDecisionNode(决策环节)应用了这种继承关系,使得子类拥有了父类环节中的属性,但子类本身代码大大简化,结构清晰。 publicclassSysTransactNodeextendsSysNode{} publicclassSysActivityNodeextendsSysTransactNode{} publicclassSysDecisionNodeextendsSysTransactNode{} 1.2依赖 依赖就是一个对象A使用到了另一个对象B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是对象B的变化会影响到对象A。比如某人要过河,需要借用一条船,此时某人与一条船之间的关系就是依赖。表现在代码层面,一般指由局部变量、返回值建立的对于其他对象的调用关系,如对象B作为参数被对象A在某个方法中使用。 1.3关联 关联体现的是两个类之间语义级别的一种强依赖关系,这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的。关联可以是单向、双向的。表现在代码层面,为被关联类B以类的属性形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量。 1.4聚合 聚合是关联关系的一种特例,它体现的是整体与部分的关系,即has-a的关系。此时整体与部分之间是可分离的,它们可以具有各自的生命周期,部分可以属于多个整体对象,为多个整体对象共享,比如计算机与CPU、公司与员工的关系等。表现在代码层面,和关联关系是一致的,只能从语义级别来区分。 1.5组合 组合也是关联关系的一种特例,它体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合。它同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束,比如人和人的大脑。表现在代码层面,和关联关系是一致的,只能从语义级别来区分。 2.数量关系 2.1一对一 一个人对应一个身份证号,一个身份证号对应一个人;通过身份证号能找到具体的人,通过具体的人也能得到身份证号,不会重复。这里人和身份证号的关系就是一对一关系。 2.2一对多(多对一) 一个班级有多个学生,但是这个班级只有一个班主任。在这个班级中随便找一个人,就会知道他们的班主任是谁;知道了这个班主任就会知道有哪几个学生。这里班主任和学生的关系就是一对多,学生和班主任的关系是多对一关系。 2.3多对多 一个班级有多个学生,他们有语文课、数学课、英语课等多门课。一门课有多个人上,一个人可以上多门课。这里学生和课程的关系就是多对多关系。 3.关系的实现 基础平台中,权限规则与基本规则是一对一的关系,字典与字典项是一对多的关系,下面分别介绍如何在数据库层面、服务层面、Javascript层面来表示这两种关系。 3.1数据库层面: 数据库中业务对象对应为表或视图,对象关系对应为各表间的关联关系,具体可抽象为外键等和外部关联的字段。 a.一对一 在数据库中,建立权限规则表与基本规则表,在权限规则表中通过基本规则ID字段对应基本规则表的主键ID,以此种方式表示权限规则与基本规则的一对一关系。同样,可以在基本规则表中增加一个字段对应权限规则表的主键ID来建立一对一关联。可以根据实际业务需求来选择在哪方设置外键。 b.一对多 在数据库中,建立字典主表与字典从表,在字典从表中通过主表字典ID字段对应字典主表的主键ID,以此种方式表示字典与字典项的一对多关系。需要注意的是,在一对多的关系配置中,关系的维护方只能是多方,即只能在多方设置外键,这是与一对一关系不同的地方。 另外可以通过中间表的方式来表示一对多关系,如模块与功能权限,如下图所示: 在中间表中,通过模块ID、功能权限ID分别引用模块表、功能权限表的主键ID表示这种一对多关系。