- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
高级软件架构设计师实战
* * 缓存模式—预填缓存 简述 用预测的数据集显示地装填缓存。预填缓存适用于经常被读取而且可以预测的数据。 * * 并发模式—事务 简述 以原子的、一致的、隔离的和未定的方式执行并发的工作单元。几乎每一种数据库平台都支持本地的事务。 背景 例如音像出租店(POS),有3张表:INVENTORY描述每种音像制品;TITLES表描述库存中是否还有某种音像制品;CUSTOMERS描述客户信息。 当一个顾客租借一件音像制品时,POS系统更新每个表:在INVENTORY中标记物品的租借状态;在TITLES表中减少可用物品的名称;在CUSTOMERS中记录客户的租借活动。 这些更新操作形成了一个单一的工作单元。因为这个工作单元需要进行多个更新操作,所以可能发生并发问题。 * * 事务提供了将多个工作单元串行化的机制,这样应用程序就可以确保其它的并发更新不会与自己冲突。事务的性质为: 原子性 一致性 隔离性 稳定性 * * * * 并发模式—乐观锁定 简述 维护版本信息以防止丢失数据库更新。乐观锁定在更新数据库之前使用应用程序语义验证工作副本的版本。 背景 与串行化的锁定方式比起来,另一种解决方法是为每一种库存的物品附件一个版本。例如,对一个库存-销售系统,最常见的方法是在“库存”表上添加一个版本字段。该字段包含时间戳,表示每行数据的最近修改时间。当订单人员下订单的时候,应用程序比较已拥有的工作副本和时间戳。如果版本不一致,应用程序会通知销售人员,使其在完成订单前发现不一致。 该策略称为“乐观锁”,但实际上数据并没有被锁定。“乐观”的意思是指这个假设在大多数情况下都是成立的。 * * 并发模式—悲观锁定 简述 在数据上附加锁定信息以防止丢失数据库更新。与类似的本地事务支持相比,显示的悲观锁定往往可以提供更好的应用程序诊断信息。 背景 悲观锁定的作用类似于系统级或数据库级的锁定。在这种锁定中 * * 接口隔离原则(ISP) * * 例 安全系统,有一些Door对象可以被加锁和解锁,并且Door对象知道自己是开着还是关着的。 需求变化: 实现一个TimedDoor,如果门开着的时间过长,它就会发出警报声。为了做到这一点,TimeDoor对象需要和一个Timer的对象交互。如何将TimerClient与TimedDoor类联系起来? * * 一种方案 * * 问题 Door依赖于TimerClient 并不是所有种类的Door都需要定时器。 违反LSP:不需时钟的派生类中需要提供TimeOut的退化方法。 不必要的复杂和重复性:使用这些派生类的客户程序被迫包含TimerClient的定义。 Door接口被TimeOut方法污染了: 持续的加入方法会使Door接口不断变胖。 每次Door中加入一个方法,其它派生类中都需要对自己不需要的方法提供退化处理。 客户对TimerClient接口的改变会影响接口使用者。 例如需要在Timer中注册多个超时通知(在TimeOut方法中加入超时ID),则即使不需要定时器的类也会受影响。 * * 使用委托分离接口 * * 使用多重继承分离接口 * * 内接口与外接口 * * 普通接口与智能接口 * * 设计数据访问器抽象时应考虑一下策略 定义通用的逻辑操作。 取得平衡 留下改进和优化的位置。 防止应用程序的低效性。 * * 解耦模式—主动域对象 在相关的域对象实现中封装数据模型和数据访问细节,主动域对象使应用程序代码避免与数据库的任何直接交互。 主动一词指的是域对象不只是简单地表示数据,还公开了逻辑操作,为它们的数据完成大多数相关的数据库交互。 背景: 数据模型改变或升级,长导致依赖于特定数据类型特征的代码不兼容。如果模型的不一致性仅仅是表层的问题,而表并不缺少功能性信息或相关信息,那么改变数据模型可能并非最好的决策。 * * 主动域对象可以定义的一些逻辑操作: 初始化:从一个或多个表中读取数据,初始化域对象的内容。 刷新:从数据库刷新域对象的内容,以保证他与从初始化以来所做的修改得意同步。 保存:通过向数据库插入或更新数据库保存域对象内容的变化。 列表:发出查询并返回查询结果的域对象集合。 * * 总结 Data Accessor提供了一种解耦合的策略:将数据库访问的细节进行逻辑抽象并封装于单一组件中,从而降低数据访问和数据模型之间的耦合性。对于应用程序而言,它并不了解具体的数据访问操作,如建立数据库连接和执行SQL语句等,但是它仍然了解数据模型的具体结构,譬如数据表名和某一数据表的列名等。因此,应用程序虽然脱离了数据访问的烦恼,但仍然与数据模型紧密耦合在一起。如果数据模型发生改变,或者数据模型的建立并非通过静态描述即可完成的,都会令应用程序不得不面临大范围的改动。在这个时候,可使用Active
您可能关注的文档
最近下载
- (正式版)SH∕T 3553-2024 石油化工汽轮机施工及验收规范.pdf VIP
- 电气专项施工方案.doc VIP
- 个人简历——【标准模板】.doc VIP
- 软件开发工具unsp ide使用说明书.pdf VIP
- 【课堂新坐标(教师用书)高中英语 Unit 3 Period V Culture Corner & Bulletin Board课件 北师大版必修1.ppt VIP
- 老年病多学科诊疗模式.pptx VIP
- GPX 生产手册.pdf VIP
- 老年病多学科诊疗模式.pptx VIP
- 【课堂新坐标(教师用书)高中英语 Unit 1 Lifestyles单元归纳提升课件 北师大版必修1.ppt VIP
- 新课标高中英语 教师用书配套资料 Unit1~2 阶段综合检测 北师大版必修1.doc VIP
文档评论(0)