pdm系统持久状态管理分析内容摘要:

化框架的分析与设计 问题: 关系模型要求属性值是原子的,而对象可以引用其它复杂对象作为自己的属性,这种非原子的属性简单的关系表不能处理,将留在后面给出解决方案。 187。 对象身份 将对象记录一一对应。 对每个对象及其记录分配一个对象标识符 OID,以区分不同的记录和对象。 (注意复制的对象与原对象不同) OID对某特定类型的对象来说必须是唯一的,最好是选择全局唯一的标识符,如 16位长的 UUID,或微软的全球唯一标识符 GUID。 每个关系数据库表都以 OID作为主键,每个持久对象都直接或间接地拥有一个 OID。 (下图) 第 21页 2020/11/17 持久化框架的分析与设计 实际应用中 OID不一定放在持久化对象中,可以放在代理对象中( Proxy)。 anObject defaultMethod( ) OID date time :anObject OID=xyz23 date=1/1/1997 time=10:00 :anObject OID=abc456 date=2/2/1997 time=14:00 anObject表 OID date time xyz23 1/1/1997 10:00 abc456 2/2/1997 14:00 第 22页 2020/11/17 持久化框架的分析与设计 187。 数据库代理 如果持久化对象类负责自身的具体化和非具体化: › 持久化对象类与持久化存储机构之间存在信息耦合(违背低耦合原则) › 在一个毫无关系的新的范围内增加对象的职责(违背高内聚的原则) 数据库代理模式设计一个类来负责具体化、非具体化、对象缓存等工作,通过加入中介者的方式支持高内聚和低耦合。 对每个不同的持久化对象类都定义一个相应的代理类,而且对不同的存储机构有不同种类的代理。 (下图) 第 23页 2020/11/17 持久化框架的分析与设计 R e la t io n a lP F W B r o ke r F i le P F W B r o ke rP F W B r o ke ra n O b je ct R e la t i o n a lB r o ke r a n o t h e r O b je ct R e la t i o n a lB r o ke r第 24页 2020/11/17 持久化框架的分析与设计 187。 框架设计的核心-模板方法模式 › 关键是好莱坞准则和反向控制,即父类调用子类的方法。 › 在父类中定义一个模板方法,在其中定义算法的基本框架。 模板方法调用其它方法,其中一些是可在子类中被覆盖的操作(纯虚)。 子类通过覆盖父类的可变方法,在方法中增加了子类自己独特的行为特征。 › 实现是基于面向对象程序设计的多态性和动态绑定机制。 (下图) 第 25页 2020/11/17 持久化框架的分析与设计 第 26页 2020/11/17 持久化框架的分析与设计 特点: › 在抽象超类中使用模板方法,定义了框架的可变和不可变的部分。 在缓存中查找和具体化对象的模式不变,但具体化的细节根据存储机构类型和对象数据结构的不同是可变的 › 可以在框架中定义和添加子类,定义对不同细节的处理 › 子类中对“基本操作”的定义完成了被继承了的模板方法 好处: › 可扩展,能适应各种情况 › 对不同情况实现统一处理,屏蔽了具体细节 › 很强的可重用性 第 27页 2020/11/17 持久化框架的分析与设计 187。 缓存管理 为提高性能,应当缓存已被具体化的对象。 由数据库代理负责维持缓存中的对象信息。 根据对象在当前事务语境中所处的状态将它们保存在不同的缓存中,代理负责维护 6个缓存: › 新干净缓存:新对象,尚未被更新 › 旧干净缓存:从数据库具体化而来的旧的对象,尚未被更新 › 新脏缓存:新的对象,已被更新 › 旧脏缓存:从数据库具体化而来的旧的对象,已被更新 › 新删除缓存:新的对象,将要被删除 › 旧删除缓存:从数据库具体化而来的旧的对象,将要被删除 (前图) 第 28页 2020/11/17 持久化框架的分析与设计 187。 智能引用代理 › 前述方案中,客户必须知道对象 OID及特定的 Broker,才能具体化服务对象,而这些对客户应该是透明的。 › 可以通过对象的智能引用代理( Proxy)实现对象具体化过程对客户的透明化。 › 智能引用代理是一个轻量级的对象,来代表可被具体化的对。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。