欢迎来到天天文库
浏览记录
ID:43535067
大小:2.38 MB
页数:79页
时间:2019-10-10
《软件需求分析与设计-框架设计与部署》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、软件需求分析与设计-框架设计与部署框架设计与部署使用模式设计持久性框架UML部署图和构件图架构的文档化:UML和N+1视图模型7/29/20212使用模式设计持久性框架目标使用模板方法状态和命令模式来设计部分框架介绍对象-关系映射中的一些问题使用虚代理实现的滞后具体化7/29/20213持久性持久性对象(persistentobject)是指需要持久性存储的对象存储机制对象数据库关系数据库其他存储格式XML,PalmOSPDB文件、层次结构数据库持久性框架(persistentframwork)是一组通用的,
2、可复用的可扩展的类型,它提供支持持久性对象的功能持久性服务由框架创建与关系数据库结合使用-O-R映射服务7/29/20214框架一组相关的类和接口相互协作,为逻辑子系统的核心和不变部分提供服务包含具体和抽象类,这些类定义了需要遵循的接口,需要参与的对象交互以及其他不变式通常(但不是必须)要求框架的使用者去定义已有框架的子类来利用、定制或扩展框架服务包含即有抽象方法又有具体方法的抽象类依赖于好莱坞原则,即“不要给我们打电话,我会给您打电话的”,用户定义的类将从预定义的框架类接收消息,这通常使通过实现超类的抽象方法
3、来实现的框架是可重用的7/29/20215持久性服务和框架的需求从持久存储装置中存储和提取对象提交和回滚事务7/29/20216关键思想映射(mapping)在类和持久性存储之间,对象属性和记录的域之间必须有某种映射关系对象标识(Objectidentity)为了方便将记录域对象关联起来,确保没有不适当的重复,记录和对象必须有唯一的对象标识数据库映射器(databasemapper)负责具体化和虚化的纯虚构数据库映射器具体化和虚化(materializationandDematerialization)具体化是
4、指将持久性存储中数据的非对象表示转换为对象虚化是指与具体化相反的动作7/29/20217关键思想缓存(cache)持久性服务为提高性能缓存具体化后的对象对象的事务状态(transationstateofObject)就对象与当前事务而言,了解对象状态是有用的,事务操作(transactionoperation)提交和回滚操作滞后具体化(lazymaterialization)并非一开始就具体化所有对象,只有当需要时才具体化特定实例虚代理(virtualproxy)滞后具体化可以通过使用称为虚代理的智能引用来实现
5、7/29/20218模式:将对象表示为表Manufacturernamecity......namecityNow&ZenMumbaiMANUFACTURERTABLE:Manufacturername=Now&Zencity=MumbaiCelestialShorteningSanRamon对象和表的映射7/29/20219UML数据建模简档«Table»ProductDescription«PK»OID:char(16)Description:varchar(100)...«FK»Manu_OID:char
6、(16)«Table»Manufacturer«PK»OID:char(16)Name:varchar(100)City:varchar(50)*1aggregatesignifiesareferentialconstraint:aProductDescriptionrowcan'texistwithoutarelatedManufacturerrowPK-primarykeyFK-foreignkey7/29/202110模式:对象标识符OIDOIDxyz123abc345Thisisasimplifiedd
7、esign.Inreality,theOIDmaybeplacedinaProxyclass.primarykeyManufacturercitynameoid:OID......namecityNow&ZenMumbaiMANUFACTURERTABLE:Manufacturercity=Mumbainame=Now&Zenoid=xyz123CelestialShorteningSanRamon对象表示符连接了对象和记录7/29/202111通过外观访问持久服务1PersistenceFacade...ge
8、tInstance():PersistenceFacadeget(OID,Class):Objectput(OID,Object)...:DBProductsAdapter1:PersistenceFacadepd=get(...)//exampleuseofthefacadeOIDoid=newOID("XYZ123");ProductDescriptionpd=(ProductDe
此文档下载收益归作者所有