软件设计模式与体系结构复习资料.doc
《软件设计模式与体系结构复习资料.doc》由会员分享,可在线阅读,更多相关《软件设计模式与体系结构复习资料.doc(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流软件设计模式与体系结构复习资料.精品文档.设计准则I:正确性和健壮性1. 正确性:每个项目都要满足指定的需求,然后一起满足所有应用程序的需求,设计的正确性一般是指充分性,实现正确性的正式方法是依靠数学逻辑,非正式方法是判断设计是否满足所需的功能,当进入详细设计阶段时,经常采用正式方法来判断正确性。2. 模块可是类或者类的包,包的接口和类的接口不同,包不能被实例化,通过包来使用接口的一种方法是利用包中指定对象来提供相应的接口。3. 为了模块化特定的应用程序,在高层需要创建包,在底层需要创建类4. 设计中用到两种类:领域类和非领域类,一般是从领域
2、类开始类的选择,然后扩展到非领域类,非领域类通常用于概括领域类。5. 健壮性:防止错误输入,防止开发错误;提高健壮性的办法:检查输入、初始化、参数传递技术、检查参数是否违反约束的方法、在类中捕获参数、包装参数、强化意图。设计准则II 灵活性、可重用性、高效性1. 灵活性:在设计时通常要考虑到将来的变化;增加新功能要依据其上下文和应用范围2. 可重用性:一个方法相对于上下文环境越独立,其可重用性就越高;完全指定、避免不必要的封装类耦合、让名字更具表达性、解释算法。3. 高效性:应用程序必须在指定时间内完成特定的功能,同样,对内存容量也有一定的要求设计模式引言:1. 设计目标是:灵活性、健壮性、可
3、重用性2. 设计原则:面向接口编程的原则(面向接口编程而不是面向实现编程)、可变性封装、开闭原则(对扩展开放,对修改关闭)、里氏替换原则(适用于父类,但不一定适用子类)、组合/聚合原则(尽量使用组合聚合/聚合,尽量不使用继承);接口隔离原则(避免接口污染)、依赖倒转原则(高层低层依赖于抽象、细节依赖于抽象)、迪米特原则(不和陌生人说话)、单一原则3. 模式的四个基本要素:问题(描述了应该在何时使用模式)、解决方案(描述了设计的组成成分)、效果(描述了模式应用的效果及使用模式应该权衡的问题)、模式名称4. 设计模式分类:按照目的可以分为:创建型、结构型、行为型 按照范围可以分为:类模式、对象模式
4、5. 模式和框架的区别:1) 设计模式比框架更抽象2) 设计模式是比框架更小的体系结构元素3) 框架比设计模式更加特例化创建型模式:1. 创建型模式包括抽象工厂模式、生成器模式、工厂模式、原型模式、单件模式2. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建、组合和表示它的那些对象3. 一个类创建型模式使用继承改变被实例化的类,而一个对象创建型模式将实例化委托给另一个对象。4. 随着系统演化地越来越依赖于对象复合而不是类继承,创建型模式变得更为重要5. 创建型模式在什么被创建、谁创建它、它是怎样被创建的以及何时创建这些方面给予很大的灵活性6. 抽象工厂模式:意图:提供一个创建一系列
5、相关或相互依赖对象的接口而不需要指定他们具体的类别名:KIT适用性:1) 一个系统不应当依赖于产品类实例如何被创建、组合和表达的细节2) 这个系统的产品有多余一个的产品族,而系统只消费其中某一个族的产品3) 同属于一个产品族的产品是在一起使用的4) 系统提供一个产品类的库,所有产品以同样的接口实现,从而使客户端不依赖于实现参与者:抽象工厂角色(核心)、具体工厂(在客户端的调用下创建实例)、抽象产品(所拥有的共同接口)、具体产品效果:1)分离了具体的类 2)使得易于交换产品系列 3)有利于产品的一致性 4)难以支持新种类的产品实现:1)将工厂作为一个单件 2)创建产品 3)定义可扩展的工厂相关:
6、AbstractFactory类通常用工厂方法实现,一个具体工厂通常是一个单件工厂方法模式:意图:定义一个用于创建对象的接口,让子类决定实例化哪个类。Factory Method使一个类的实例化延迟到其子类别名:虚构造器适用性: 1)当一个类不知道它所必须创建的对象的类的时候 2)当一个类希望由他的子类来指定他所创建的对象的时候效果: 1)多态性: 客户代码可以做到与特定应用无关,适用于任何实体类 2)子类提供挂钩。基类为工厂方法提供缺省实现,子类可以重写新的实现,也可以继承父类的实现。- 加一层间接性,增加了灵活性 3)封装性好,扩展性好,屏蔽产品类 4)需要Creator和相应的子类作为f
7、actory method的载体,如果应用模型确实需要creator和子类存在,则很好;否则的话,需要增加一个类层次单件模式:意图:保证一个类有且只有一个实例,并提供一个访问它的全局访问点适用性:1)当类只能有一个实例而且客户可以从一个众所周知的访问点访问它2) 当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展类的实例优点:1)对唯一实例的受控访问 2)缩小名空间 3)允许对操作和表示的精化 4)比类操作更灵活使用单件模式的要点:单件模式中的实例构造器可以设置为protected 以允许子类派生; 单件模式只考虑到了对象创建的管理,没有考虑对象销毁的管理。实现:
8、保证一个唯一的实例;创建单件类的子类/本质:内存中只能有一个对象/案例:定时器,计数器/使用场景:一个项目只要一个共享访问点和共享数据;创建对象消耗资源比较多,如IO操作和数据库读取/注意:线程安全public sealed class Singleton private static Singleton _singleton = null; private static readonly object _synLock = new object(); private Singleton() public static Singleton GetInstance() lock (_synLoc
9、k) if (_singleton=null) _singleton = new Singleton(); return _singleton;结构型模式:1. 结构型模式涉及到如何组合类和对象以获得更大的结构。2. 结构型类模式采用继承机制来组合接口或者实现。3. 结构型模式包括:适配器模式(类对象)、组合模式(对象)、装饰模式(对象)4. 适配器模式:意图:将一个类的接口转化为客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能够在一起工作的类可以一起工作别名:包装器适用性:1)想使用一个已经存在的类,但接口不符合需要2) 想创建一个可复用的类,该类可以和其他不相关的类和
10、不可预见的类协同工作3) 想使用一些已经存在的类,但不可能对每一个都子类化以匹配他们的接口,对象适配器可以可以适配他们的父类接口结构:类适配器(使用多重继承) 对象适配器(使用对象组合)效果:类适配器:1)用一个具体的类适配Adaptee和Target,当想要匹配一个类及他的子类的时候,类Adapter将不再适用 2)Adapter可以重新定义Adaptee的部分方法 3)仅仅引入了一个对象,不需要额外的指针对象适配器:1)允许Adapter和一个或者多个Adaptee进行适配,Adapter可以一次性给多个Adaptee添加功能2) 使得重新定义Adaptee的部分希望变得困难注意事项:1)
11、Adapter的匹配程度 2)可插入的Adapter 3)使用双向适配器通过透明操作实现:可插入的适配器的实现方法:使用抽象操作、使用代理对象、参数化的适配器组合模式:意图:将对象组合成数结构以表示“整体部分”结构,组合模式使得用户对单个对象和组合对象的使用具有一致性适用性:1)想表示对象的“整体部分”的结构2) 希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的对象效果:1)通过递归组合,在客户端代码中,任何用到基本对象的地方都可以使用组合对象2) 简化客户代码,客户可以一致地使用组合结构和单个对象3) 使得更容易添加新类型的组件4) 设计一般化,由于容易添加新组件,也将容易
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件设计 模式 体系结构 复习资料
限制150内