电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

软件体系结构设计模式

54页
  • 卖家[上传人]:宝路
  • 文档编号:47670768
  • 上传时间:2018-07-03
  • 文档格式:PPT
  • 文档大小:1.47MB
  • / 54 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、INTEL CONFIDENTIAL设计模式主讲:张春祥HUST Software College 模式 模式描述了一个在我们的环境中不断出现的问题,然后描述 了该问题的解决方案的核心。通过这种方式,你可以无数次 地使用那些已有的解决方案,无需在重复相同的工作。 -建筑的永恒之道Alexander 模式其实就是解决某一类问题的方法论。 把解决某类问题的方法总结归纳到理论高度,那就是模式。 模式对问题的描述以及对问题的解答应具有高度的抽象性和 代表性。 模式是对现实生活某类现象的共同特质的高度抽象,描述了 事务或者现象的规律,这种规律以及解决方法对于类似的现 象同样有用。2HUST Software College 软件的设计模式 指在软件设计和开发过程中,不断总结出来的,反应了某一 类设计问题的解决方案。 模式是一种指导,在一个良好的指导下,有助于你完成任务 ,有助于你作出一个优良的设计方案,达到事半功倍的效果 。而且会得到解决问题的最佳办法 。 设计模式使人们可以更加简单方便地复用成功的设计和体系 结构。 设计模式帮助你从别人的成功经验而不是你自己的失败那里 学到更多东西;- Mar

      2、k Johnson 设计模式提供了一种共享经验的方式,可以使团体受益和避 免不断的重复发明。3HUST Software College 模式概要模式只是武功套路。其实真正的内功心法是: 针对接口编程针对接口编程 优先使用对象组合,而不是类继承优先使用对象组合,而不是类继承 找到并封装变化点找到并封装变化点4HUST Software College 设计原则面向接口编程的原则 面向接口编程,而不是面向实现编程。 可变性封装的原则 在设计时应当考虑系统中什么可能会发生变化,或者什么特性具备多变的特征 。这种变化不应该散落在代码中的各个角落,而是应该被适当的封装起来,以 便于维护以及扩展; 开闭原则 软件中的实体(包括类,模块,函数等等)应当是可扩展的(开),而不应被 修改(闭)。 里氏替换原则 父类的方法都要在子类中实现或者重写。 不允许子类出现父类所没有定义的方法。 依赖倒转原则 高层模块不应该依赖于低层模块。二者都应该依赖于抽象。 抽象不应该依赖于细节。细节应该依赖于抽象。5HUST Software College 设计原则组合/聚合复用原则 尽量使用组合/聚合、尽量不使用继承

      3、在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新的对 象通过向这些对象的委派达到复用这些对象的目的 接口隔离原则 避免接口污染; 恰当的划分角色和接口; 从一个客户类的角度来讲:一个类对另外一个类的依赖性应当是建立在最小的 接口上的 使用多个专门的接口比使用单一的总接口要好 所有设计原则的目标都是为了使软件:降低耦合,增强灵活性。6HUST Software College 模式分类 创建模式(Creational Pattern) AbstractFactory;Builder;FactoryMethod;Prototype;Singleton 结构模式(Structural Pattern) Adapter.4Class;adapter.4Object;Bridge;Composite.s;Composit e.t;Decorator;Faade;Flyweight;Proxy 行为模式(Behavioral Pattern) ChainOfResponsibility;Command;Interpreter;Iterator;Mediator ;Memento;O

      4、bserver;Strategy;State;TemplateMethod;Visitor78HUST Software College 工厂方法9HUST Software College 工厂方法10HUST Software College 抽象工厂11HUST Software College 抽象工厂意图:为特定的客户(或情况)提供特定系列的对象。提供一个创建一系列相关或相 互依赖对象的接口,而无需指定它们具体的类。 问题:一系列相关的对象需要被实例化。 12HUST Software College 建造模式13HUST Software College 建造模式14HUST Software College 单例/单子模式15HUST Software College 单例/单子模式16HUST Software College 类的适配器(Adapter)模式 意图:将一个类的接口转换成客户希望的另外一个接口。此模式使得原本由于接口 不兼容而不能一起工作的那些类可以一起工作。 问题: 你想使用一个已经存在的类,而它的接口不符合你的需求。 你想创建一个可以复用的类,该类可

      5、以与其他不相关的类或不可预见的类 (即那些接口可能不一定兼容的类)协同工作。17HUST Software College 类的适配器(Adapter)模式18HUST Software College adapter.for Object 意图:将一个类的接口转换成客户希望的另外一个接口。此模式使得原本由于接口 不兼容而不能一起工作的那些类可以一起工作。 问题: 你想使用一个已经存在的类,而它的接口不符合你的需求。 你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些 接口可能不一定兼容的类)协同工作。多个对象适配成为一个对象 19HUST Software College adapter.for Object20HUST Software College 桥梁(Bridge)/柄体(Handle and Body)模式 意图:将抽象部分与它的实现部分分离,使它们都可以独立地变化。 问题:一个抽象类的派生类必须使用多种实现部分,但又不能引起类数量的爆炸。 21HUST Software College 桥梁(Bridge)/柄体(Handle and Body)模

      6、式Bridge桥梁模式:将抽象化与实现 化脱耦,使得 二者可以独立的变化,也就是说将他们之间的强关联 变成弱关联,从而使两者可以独立的变化。Bridge模式可以将一个复杂的组件分成2个独立的 但又相关的继承层次结构:功能性的抽象和内部实现 。改变组 件的这两个层次结构很简单 ,以至于它们可 以相互独立地变化。22HUST Software College 桥梁(Bridge)/柄体(Handle and Body)模式当具有抽象的层次结构和相应的实现层次结构时, Bridge模式是非常有用的。除了可以将抽象和实现组 合成许多不同的类,该模式还可以动态组合的独立类的 形式实现这些抽象和实现。优点:(1)可以将接口与现实相分离(2)提高了可扩展性(3)对客户端隐藏了实现的细节23HUST Software College 桥梁(Bridge)/柄体(Handle and Body)模式何时使用:(1)想避免在抽象及其实现之间存在永久的绑定。(2)抽象及其实现可以使用子类进行扩展。(3)抽象的实现被改动应该对客户端没有影响;也 就是说,你不用重新编译代码。24HUST Software Co

      7、llege 桥梁(Bridge)/柄体(Handle and Body)模式25HUST Software College 装饰器(Decorator)模式意图:动态地给一个对象添加一些额外的职责。 问题:允许扩展一个对象的功能,而不必借助于继承。动态地给一个对象添加一些 额外的职责。处理那些可以撤消的职责。 注意:对象链总是以ConcreteComponent对象结束 26HUST Software College 装饰器(Decorator)模式装饰模式以对客户端透明的方式扩展对象的功能, 是继承关系的一个替代方案,提供比继承更多的灵活性 。动态给一个对象增加功能,这些功能可以再动态的撤 消。增加由一些基本功能的排列组合而产生的非常大量 的功能。优点:(1)比静态继承具有更大的灵活性。(2)简化了编码,用户编写的每一个类都针对功能 的一个特定部分,不用将所有的行为编码到对象中。27HUST Software College 装饰器(Decorator)模式何时使用:(1)想要在单个对象中动态并且透明地添加责任, 而这样并不会影响其他对象。(2)想要在以后可能要修改的对象中添加责任。

      8、28HUST Software College 装饰器(Decorator)模式29HUST Software College 门面(Facade )模式意图:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口, 这个接口使得这一子系统更加容易使用。 问题: 当你要为一个复杂子系统提供一个简单接口时。 客户程序与抽象类的实现部分之间存在着很大的依赖性。 当你需要构建一个层次结构的子系统时,使用此模式定义子系统中每层的入口点。30HUST Software College 门面(Facade )模式Facade模式模式为子系统的一组接口提供了一个 统一的接口。因为只有一个接口,该模式就定义了更 容易使用子系统的高级接口。这个统一的接口允许对 象使用该接口与子系统进 行通信,从而实现对 子系统 的访问 。优点:(1)在不减少系统所提供的选项的情况下为复杂系 统提供了简单接口。(2)对客户端屏蔽了子系统组件。(3)提高了子系统与其客户端之间的弱耦合度。31HUST Software College 门面(Facade )模式何时使用:(1)想要为复杂的子系统提供简单的接口。(2

      9、)在客户端和抽象的实现类中存在许多依赖关系。32HUST Software College 门面(Facade )模式33HUST Software College 代理(Proxy)模式 意图:为其他对象提供一种代理以控制对这个对象的访问。 问题: 在需要用比较通用和复杂的对象指针代替简单的指针的时候,使用P r o x y 模式。下面是一 些可以使用P r o x y 模式常见情况: 1) 远程代理(Remote Proxy )为一个对象在不同的地址空间提供局部代表 。 NEXTSTEP使用N X P r o x y 类实现了这一目的。Coplien称这种代理为“ 大使” (A m b a s s a d o r )。 2 )虚代理(Virtual Proxy )根据需要创建开销很大的对象。在动机一节描述 的I m a g e P r o x y 就是这样一种代理的例子。 3) 保护代理(Protection Proxy )控制对原始对象的访问。保护代理用于对 象应该有不同 的访问权限的时候。例如,在C h o i c e s 操作系统中K e m e l P r o x i e s 为操作系统对象提供 了访问保护。 4 )智能指引(Smart Reference )取代了简单的指针,它在访问对象时执行 一些附加操作。 它的典型用途包括:对指向实际对象的引用计数,这样当该对 象没有引用时,可以自动释放它(也称为S m a r t P o i n t e r s)。当第一次 引用一个持久对象时,将它装入内存。在访问一个实际对象前,检查是否已经 锁定了它,以确保其他对象不能改变它。34HUST Software College 代理(Proxy)模式优点:(1)远程代理可以隐藏对象位于不同的地质空间的事实 。(2)虚拟代理可以执行优化操作,例如根据需要创建一 个对象。何时使用:需要比简单的指针更灵活,更全面的对象引用。35HUST Software College 代理(Proxy)模式36HUST Software College 代理(Proxy)模式37

      《软件体系结构设计模式》由会员宝路分享,可在线阅读,更多相关《软件体系结构设计模式》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
     
    收藏店铺
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.