软件设计模式与体系结构复习资料
- 格式:doc
- 大小:68.50 KB
- 文档页数:14
软件设计与体系结构复习题软件设计与体系结构复习题软件设计与体系结构是计算机科学与技术领域中的重要课程,它涉及到软件系统的设计、构建和维护。
在这篇文章中,我们将回顾一些与软件设计与体系结构相关的复习题,以帮助读者巩固知识和提高理解。
一、软件设计原则1. 什么是SOLID原则?请简要介绍每个原则的含义。
SOLID原则是面向对象设计中的五个基本原则,分别是单一职责原则、开放封闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。
单一职责原则指一个类只应该有一个引起变化的原因;开放封闭原则指软件实体(类、模块、函数等)应该对扩展开放,对修改关闭;里氏替换原则指子类对象应该能够替换父类对象而不影响程序的正确性;接口隔离原则指客户端不应该依赖它不需要的接口;依赖倒置原则指高层模块不应该依赖于低层模块,它们都应该依赖于抽象。
2. 什么是DRY原则?它的目的是什么?DRY原则(Don't Repeat Yourself)指不要重复自己。
它的目的是避免代码的重复,提高代码的可维护性和可复用性。
通过遵循DRY原则,可以减少代码的冗余,降低了修改代码时的风险,同时也提高了代码的可读性。
二、软件体系结构1. 什么是软件体系结构?它有什么作用?软件体系结构是指软件系统的整体结构和组织方式,它描述了软件系统中各个组件之间的关系和交互。
软件体系结构有助于理解系统的整体架构,提供了对系统进行设计、开发和维护的指导方针。
2. 请简要介绍常见的软件体系结构模式。
常见的软件体系结构模式包括分层结构、客户端-服务器结构、发布-订阅结构、管道-过滤器结构等。
分层结构将系统划分为若干层次,每一层次负责不同的功能;客户端-服务器结构将系统划分为客户端和服务器两部分,客户端发送请求,服务器提供服务;发布-订阅结构中,发布者发布消息,订阅者订阅感兴趣的消息;管道-过滤器结构中,数据通过一系列的过滤器进行处理。
三、设计模式1. 什么是设计模式?为什么使用设计模式?设计模式是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。
各种性能指标及如何到达各种性能指标的方法反应—对正常和极端用法的脚本的反应是否足够快可伸缩性—系统的实力克依据须要增加或削减容量/产量—处理大负荷仍有反应平安性—系统不会社会产生危害常用的中间件有那几种类型CORBA,Message-oriented middleware,J2EE, Message brokers,Business process orchestrators 有那些常见架构风格1.管道和过滤器架构风格适用于须要定义一系列的执行规则数据的独立运算。
组件在输入时读数据流,在输出时产生数据流。
组件:称为过滤器,应用于对局部的输入流的转换,经常增长的计算,因此,在输入结束前输出就起先了。
. 连接器:称为管道,给流供应管道,把一个过滤器的输出传输到另一个输入。
2.面对对象风格适用于主要问题是识别和爱惜信息的相关主体。
数据代理和它们相关的操作封装在一个抽象数据类型里面。
组件:对象连接器:功能和过程调用(方法3.隐式调用风格应用于涉及到组件的松耦合集,其中的每一个都执行一些操作,还可能允许其他的操作。
尤其对必需很快重新配置的应用很有用变更服务的供应商可能的或是不行能的实力不是干脆的引用过程一个组件能发表一个或多个事务在系统中的其他组件能够在事务中注册一个爱好通过和事务和过程结合当一个事务被声明后,广播系统(连接器自己引用已经注册的事务的全部过程全部声明的事务“隐式”造成了过程在其他模块的调用4. 客户-服务器风格适用于涉及到分布式的数据和跨越一系列的组件的处理组件:服务器:标准独立的组件供应特别的服务,如打印,数据管理等。
客户端:组件调用服务器供应的服务。
连接器:网络,允许客户端访问远程服务器。
5.分层风格适用于涉及到分布式的能够分层的组织的类的服务每层给它的上一层供应服务,同时作为下一层的客户端只有细致地从内层选择选择过程,才能用于他们接近的外层。
组件:典型的过程的集合。
连接器:典型的在有限的可见性下的过程调用6. 仓库风格适用于主要问题是建立、增加和维护困难信息的主体部分信息确定要能够用很多种方式操作。
第1章 软件体系结构概论软件危机:是指计算机软件的开发和维护过程中所遇到的一系列严重问题。
危机的表现:软件成本日益增长、开发进度难以控制、软件质量差、软件维护困难。
消除软件危机的方法:软件工程,软件工程三要素:方法、工具和过程。
成因:用户需求不明确、缺乏正确的理论指导、软件规模越来越大、软件复杂度越来越高。
软件重用:是指在两次或多次不同的软件开发过程中重复使用相同或相近元素的过程。
软件元素包括程序代码、测试用例、设计文档、设计过程、需求分析文档甚至领域知识。
构件:是指语义完整、语法正确和有可用性价值的单位软件。
构件分类方法:关键字分类法、刻面分类法和超文本组织方法。
构件重用的过程:检索与提取构件、理解与评价构件、修改构件、构件组装。
构件重用内容:需求重用、设计重用、代码重用和组织机构重用3.掌握软件体系结构的定义、软件体系结构的意义及发展史、软件体系结构研究内容软件体系结构定义:software architecture ,是具有一定形式的结构化元素,即构件的集合,包括处理构件,数据构件和连结构件。
意义:1体系结构是风险承担者进行交流的手段 2是早期设计决策的体现3是可传递和可重用的模型体现原因:1 明确了对系统实现的约束条件 2 构决定了开发和维护组织的组织结构 3制约着系统的质量属性 4通过研究软件体系结构可能预测软件的质量5使推理和控制更改更简单 6有助于循序渐进的原型设计 7可以作为培训的基础四个发展阶段:1“无体系结构”设计阶段:以汇编语言进行小规模应用程序开发为特征 2萌芽阶段:出现了程序结构设计主题,以控制流图和数据流图构成软件结构为特征 3初期阶段:出现了从不同侧面描述系统的结构模型,以UML 为典型代表4高级阶段:以描述系统的高层抽象结构为中心,不关心具体的建模细节,划分了体系结构模型与传统软件结构的界限,该阶段以Kruchten 提出的“4+1”模型为标志第2章 软件体系结构建模软件体系结构模型的种类:结构模型、框架模型、动态模型、过程模型和功能模型,最常用的是结构模型和动态模型。
一、1. 软件危机的表现和成因。
2. 构件和软件重用的概念?3. 基于构件软件重用的开发组织结构关系和关系图。
二、1.广义软件设计的含义。
2. 广义软件设计过程的两个动作及其含义。
3. 软件设计(如非特别说明,均指一般意义上的)的方法分类。
4. 软件设计活动步骤。
5. 软件设计要素。
6. 软件体系结构的概念。
三、1. 软件体系结构的5种模型(简答)。
2. 什么是(4+1)视图模型,理解其含义。
3. 构件、连接件、配置、端口与角色及其互相关系。
4. 软件体系结构生命周期模型,理解其含义。
5. 功能需求与非功能需求。
四、1.能够列举出几种经典的软件体系结构风格。
2. 二层C/S的工作机制和优缺点。
五、1. 三层C/S ,B/S体系结构的工作机制和各自优缺点。
2. C/S与B/S混合软件体系结构模型。
六、1.软件体系结构描述方法有哪些,目前占据主导地位的是那一种?(P99).2.软件体系结构描述语言的特色是什么?(p101)3. 软件体系结构描述有哪些标准和规范?4. UML 和XML 都可以用来描述软件体系结构。
七、八、九1. UML的功能,UML的特色,UML的组成。
2. 对一个实际的系统采用UML面向对象建模。
十、1、为什么要评估软件体系结构?2、从哪些方面评估软件体系结构?3、软件体系结构评估的主要方式是什么?4、有哪两种常用的评估方法?十一、十二、十三、十四、十五1.由数据流图产生软件结构图。
2.模块内部的设计,设计模块功能的实现。
3.详细设计表示法。
4.深刻感受用户界面设计的意义,掌握用户界面设计的基本特征,对用户界面设计的风格和设计的一般问题有所了解,并且熟悉设计过程。
十六、1.中间件的说明性定义,中间件的特点。
2. 解释设计模式。
3. CMU/SEI所给出软件产品线的定义,并简要说明对这个定义应如何理解。
4. 理解框架和应用框架技术十七、1. 从软件维护的分类分析软件设计演化的原因和必要性。
软件体系构造知识点:第一章:1.什么是软件体系构造答:软件体系构造=构件+连接件+约束软件体系构造是具有一定形式的构造化元素,即构件的集合,包括处理构件、数据构件和连接构件。
处理构件负责对数据进展加工,数据构件是被加工的信息,连接构件把体系构造的不同局部组组合连接起来。
这一定义注重区分处理构件、数据构件和连接构件,这一方法在其他的定义和方法中根本上得到保持。
2.软件体系构造形式化方法答:1.根据对目标软件系统进展说明的方式:(1)面向模型的方法。
在这个方法中,对目标软件系统的说明是为其构造一个模型,该模型的构成成分是一些具有特性的数据抽象,如域,元组等(2)面向性质的方法。
这种方法是直接给出目标软件系统的一组特性来描述目标软件系统。
通常是目标软件系统必须满足的形式公理,其形式化说明仅描述目标软件系统的性质,而不涉及实现方法。
2.根据表达能力的形式方法可分为以下五大类(1)基于模型的方法(2)代数方法(3)过程代数方法(4)基于逻辑的方法(5)基于网络的方法3.软件质量定义、软件质量模型答:,软件质量是软件符合明确表达的功能和性能需求、文档中明确描述的开发标准、以及所有专业开发的软件都应具有的隐含特征的程度。
影响软件质量的主要因素,这些因素是从管理角度对软件质量的度量。
可划分为三组,分别反响用户在使用软件产品时的三种观点。
正确性、强健性、效率、完整性、可用性、风险〔产品运行〕;可理解性、可维修性、灵活性、可测试性〔产品修改〕;可移植性、可再用性、互运行性〔产品转移〕。
第二章:4.Kruchten 4+1模型描述软件体系构造Kruchten 4+1模型建立在体系构造的Perry&Wolf定义和Berry Boehm定义的根底上,采用多视图模型的方法描述软件体系构造。
该模型由5个视图构成,每个视图只关心系统的一个侧面,5个视图结合在一起才能反映系统的软件体系构造的全部容。
程序员软件管理系统工程师拓扑通集成者信性能可扩展性体系构造的概念在每个视图里面都可以独立应用,并不是所有的软件体系构造都需要完整的4+1视图。
软件体系结构复习资料软件体系结构复习资料软件体系结构是指软件系统中各个组成部分之间的关系和交互方式。
它是软件系统设计的基础,决定了软件系统的可靠性、可维护性和可扩展性。
在软件体系结构的学习中,我们需要了解不同的体系结构模式、设计原则和关键概念。
本文将从这些方面进行复习,帮助读者更好地理解软件体系结构。
一、体系结构模式1. 分层结构模式分层结构模式是一种常见的软件体系结构模式,它将软件系统划分为多个层次,每个层次负责不同的功能。
这种模式有助于实现模块化、可维护性和可复用性。
例如,一个三层架构的Web应用程序可以分为表示层、业务逻辑层和数据访问层,每个层次都有不同的责任和职责。
2. 客户端-服务器模式客户端-服务器模式是一种常见的分布式体系结构模式,它将软件系统划分为客户端和服务器两个部分。
客户端负责用户界面和用户交互,而服务器负责处理业务逻辑和数据存储。
这种模式有助于实现系统的可伸缩性和可扩展性。
3. 主从模式主从模式是一种常见的并行计算体系结构模式,它将软件系统划分为一个主节点和多个从节点。
主节点负责协调和控制整个系统的运行,而从节点负责执行具体的任务。
这种模式有助于提高系统的处理能力和性能。
二、设计原则1. 单一职责原则单一职责原则要求一个类或模块只负责一项功能。
这样可以提高代码的可读性、可维护性和可测试性。
例如,在一个MVC架构中,控制器只负责处理用户请求,模型只负责数据存储和处理,视图只负责展示数据。
2. 开放封闭原则开放封闭原则要求软件系统应该对扩展开放,对修改封闭。
这意味着当需求变化时,我们应该通过扩展现有的代码来满足新的需求,而不是修改已有的代码。
这样可以提高系统的稳定性和可维护性。
3. 依赖倒置原则依赖倒置原则要求高层模块不应该依赖于低层模块,而是应该依赖于抽象。
这样可以降低模块之间的耦合度,提高系统的灵活性和可扩展性。
例如,使用接口来定义模块之间的依赖关系,而不是直接依赖于具体的实现类。
第1章软件体系结构概论软件危机:是指计算机软件的开发和维护过程中所遇到的一系列严重问题.危机的表现:软件成本日益增长、开发进度难以控制、软件质量差、软件维护困难.消除软件危机的方法:软件工程,软件工程三要素:方法、工具和过程。
成因:用户需求不明确、缺乏正确的理论指导、软件规模越来越大、软件复杂度越来越高.软件重用:是指在两次或多次不同的软件开发过程中重复使用相同或相近元素的过程。
软件元素包括程序代码、测试用例、设计文档、设计过程、需求分析文档甚至领域知识。
构件:是指语义完整、语法正确和有可用性价值的单位软件。
构件分类方法:关键字分类法、刻面分类法和超文本组织方法.构件重用的过程:检索与提取构件、理解与评价构件、修改构件、构件组装。
构件重用内容:需求重用、设计重用、代码重用和组织机构重用3.掌握软件体系结构的定义、软件体系结构的意义及发展史、软件体系结构研究内容软件体系结构定义:software architecture,是具有一定形式的结构化元素,即构件的集合,包括处理构件,数据构件和连结构件。
意义:1体系结构是风险承担者进行交流的手段2是早期设计决策的体现3是可传递和可重用的模型体现原因:1 明确了对系统实现的约束条件 2 构决定了开发和维护组织的组织结构3制约着系统的质量属性4通过研究软件体系结构可能预测软件的质量5使推理和控制更改更简单6有助于循序渐进的原型设计7可以作为培训的基础四个发展阶段:1“无体系结构”设计阶段:以汇编语言进行小规模应用程序开发为特征2萌芽阶段:出现了程序结构设计主题,以控制流图和数据流图构成软件结构为特征3初期阶段:出现了从不同侧面描述系统的结构模型,以UML为典型代表4高级阶段:以描述系统的高层抽象结构为中心,不关心具体的建模细节,划分了体系结构模型与传统软件结构的界限,该阶段以Kruchten提出的“4+1"模型为标志第2章软件体系结构建模软件体系结构模型的种类:结构模型、框架模型、动态模型、过程模型和功能模型,最常用的是结构模型和动态模型.“4+1"模型:逻辑视图、进程视图、物理视图、开发视图和场景视图。
软件设计与体系结构复习软件设计与体系结构复习第⼀章:软件⼯程与软件设计1.1软件⼯程1.1.1 软件概述1. 计算机软件是与计算机系统操作有关的程序、规程、规则及任何与之有关的⽂档及数据,计算机软件=程序+数据+⽂档2. 软件由两部分组成:⼀是机器可执⾏的程序及有关数据;⼆是机器不可执⾏的,与软件开发、运⾏、维护、使⽤、培训有关的⽂档。
3. 软件是逻辑产品⽽不是物理产品4. 软件分为:系统软件、实时软件、嵌⼊式软件、科学和⼯程计算软件、事务处理软件、⼈⼯智能软件、个⼈计算机软件1.1.2 软件危机产⽣软件危机的原因:1. ⽤户对软件需求的描述不精确,可能存在遗漏、⼆义性、错误等。
在软件开发过程中,⽤户甚⾄还提出修改软件功能、界⾯、⽀撑环境等⽅⾯的要求,导致需求不断变更。
2. 软件开发⼈员对⽤户需求的理解与⽤户的期望有所差异,这种差异必然导致开发出来的软件产品与⽤户要求不⼀致。
3. ⼤型软件项⽬需要组织⼀定的⼈⼒共同完成,但多数管理⼈员缺乏开发⼤型软件系统的经验,⽽多数软件开发⼈员⼜缺乏管理⽅⾯额经验。
各类⼈员的信息交流不及时、不准确,有时还会产⽣误解。
4. 软件项⽬开发⼈员不能有效、独⽴⾃主地处理⼤型软件的全部关系和各个分⽀,因此容易产⽣疏漏和错误。
5. 缺乏有⼒的⽅法学和⼯具⽅⾯的⽀持,过分依靠程序设计⼈员在软件开发过程中的技巧和创造性,加剧了软件产品的个性化。
6. 软件产品的特殊性和⼈类智⼒的局限性,导致⼈们⽆⼒处理“复杂问题”。
⼀旦⼈们采⽤先进的组织形式、开发⽅法和⼯具提⾼了软件的开发效率和能⼒,新的、更⼤且复杂的问题⼜出现在⼈们⾯前。
1.1.3 软件⼯程的概念1. 软件⼯程的定义包括:1. 软件⼯程是将系统的、规范的、可度量的⽅法应⽤于软件的开发、运⾏和维护过程,以及对上述⽅法的研究2. 软件⼯程是⽤⼯程、科学和数学的原则和⽅法,研制、维护计算机软件的有关技术及管理⽅法2. ⼀般认为,软件⼯程由⽅法、⼯具和过程三个要素组成。
设计准则I:正确性和健壮性1.正确性:每个项目都要满足指定的需求,然后一起满足所有应用程序的需求,设计的正确性一般是指充分性,实现正确性的正式方法是依靠数学逻辑,非正式方法是判断设计是否满足所需的功能,当进入详细设计阶段时,经常采用正式方法来判断正确性。
2.模块可是类或者类的包,包的接口和类的接口不同,包不能被实例化,通过包来使用接口的一种方法是利用包中指定对象来提供相应的接口。
3.为了模块化特定的应用程序,在高层需要创建包,在底层需要创建类4.设计中用到两种类:领域类和非领域类,一般是从领域类开始类的选择,然后扩展到非领域类,非领域类通常用于概括领域类。
5.健壮性:防止错误输入,防止开发错误;提高健壮性的办法:检查输入、初始化、参数传递技术、检查参数是否违反约束的方法、在类中捕获参数、包装参数、强化意图。
设计准则II 灵活性、可重用性、高效性1.灵活性:在设计时通常要考虑到将来的变化;增加新功能要依据其上下文和应用范围2.可重用性:一个方法相对于上下文环境越独立,其可重用性就越高;完全指定、避免不必要的封装类耦合、让名字更具表达性、解释算法。
3.高效性:应用程序必须在指定时间内完成特定的功能,同样,对内存容量也有一定的要求设计模式引言:1.设计目标是:灵活性、健壮性、可重用性2.设计原则:面向接口编程的原则(面向接口编程而不是面向实现编程)、可变性封装、开—闭原则(对扩展开放,对修改关闭)、里氏替换原则(适用于父类,但不一定适用子类)、组合/聚合原则(尽量使用组合聚合/聚合,尽量不使用继承);接口隔离原则(避免接口污染)、依赖倒转原则(高层低层依赖于抽象、细节依赖于抽象)、迪米特原则(不和陌生人说话)、单一原则3.模式的四个基本要素:问题(描述了应该在何时使用模式)、解决方案(描述了设计的组成成分)、效果(描述了模式应用的效果及使用模式应该权衡的问题)、模式名称4.设计模式分类:按照目的可以分为:创建型、结构型、行为型按照范围可以分为:类模式、对象模式5.模式和框架的区别:1)设计模式比框架更抽象2)设计模式是比框架更小的体系结构元素3)框架比设计模式更加特例化创建型模式:1.创建型模式包括抽象工厂模式、生成器模式、工厂模式、原型模式、单件模式2.创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建、组合和表示它的那些对象3.一个类创建型模式使用继承改变被实例化的类,而一个对象创建型模式将实例化委托给另一个对象。
4.随着系统演化地越来越依赖于对象复合而不是类继承,创建型模式变得更为重要5.创建型模式在什么被创建、谁创建它、它是怎样被创建的以及何时创建这些方面给予很大的灵活性6. 抽象工厂模式:意图:提供一个创建一系列相关或相互依赖对象的接口而不需要指定他们具体的类别名:KIT适用性:1)一个系统不应当依赖于产品类实例如何被创建、组合和表达的细节2)这个系统的产品有多余一个的产品族,而系统只消费其中某一个族的产品3)同属于一个产品族的产品是在一起使用的4)系统提供一个产品类的库,所有产品以同样的接口实现,从而使客户端不依赖于实现参与者:抽象工厂角色(核心)、具体工厂(在客户端的调用下创建实例)、抽象产品(所拥有的共同接口)、具体产品效果:1)分离了具体的类2)使得易于交换产品系列3)有利于产品的一致性4)难以支持新种类的产品实现:1)将工厂作为一个单件2)创建产品3)定义可扩展的工厂相关:AbstractFactory类通常用工厂方法实现,一个具体工厂通常是一个单件工厂方法模式:意图:定义一个用于创建对象的接口,让子类决定实例化哪个类。
Factory Method使一个类的实例化延迟到其子类别名:虚构造器适用性:1)当一个类不知道它所必须创建的对象的类的时候2)当一个类希望由他的子类来指定他所创建的对象的时候效果:1)多态性:客户代码可以做到与特定应用无关,适用于任何实体类2)子类提供挂钩。
基类为工厂方法提供缺省实现,子类可以重写新的实现,也可以继承父类的实现。
-- 加一层间接性,增加了灵活性3)封装性好,扩展性好,屏蔽产品类4)需要Creator和相应的子类作为factory method的载体,如果应用模型确实需要creator和子类存在,则很好;否则的话,需要增加一个类层次单件模式:意图:保证一个类有且只有一个实例,并提供一个访问它的全局访问点适用性:1)当类只能有一个实例而且客户可以从一个众所周知的访问点访问它2)当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展类的实例优点:1)对唯一实例的受控访问2)缩小名空间3)允许对操作和表示的精化4)比类操作更灵活使用单件模式的要点:单件模式中的实例构造器可以设置为protected 以允许子类派生;单件模式只考虑到了对象创建的管理,没有考虑对象销毁的管理。
实现:保证一个唯一的实例;创建单件类的子类//本质:内存中只能有一个对象//案例:定时器,计数器//使用场景:一个项目只要一个共享访问点和共享数据;创建对象消耗资源比较多,如IO操作和数据库读取//注意:线程安全public sealed class Singleton{private static Singleton _singleton = null;private static readonly object _synLock = new object();private Singleton(){}public static Singleton GetInstance(){lock (_synLock){if (_singleton==null)_singleton = new Singleton();return _singleton;}}}结构型模式:1.结构型模式涉及到如何组合类和对象以获得更大的结构。
2.结构型类模式采用继承机制来组合接口或者实现。
3.结构型模式包括:适配器模式(类对象)、组合模式(对象)、装饰模式(对象)4.适配器模式:意图:将一个类的接口转化为客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能够在一起工作的类可以一起工作别名:包装器适用性:1)想使用一个已经存在的类,但接口不符合需要2)想创建一个可复用的类,该类可以和其他不相关的类和不可预见的类协同工作3)想使用一些已经存在的类,但不可能对每一个都子类化以匹配他们的接口,对象适配器可以可以适配他们的父类接口结构:类适配器(使用多重继承)对象适配器(使用对象组合)效果:类适配器:1)用一个具体的类适配Adaptee和T arget,当想要匹配一个类及他的子类的时候,类Adapter将不再适用2)Adapter可以重新定义Adaptee的部分方法3)仅仅引入了一个对象,不需要额外的指针对象适配器:1)允许Adapter和一个或者多个Adaptee进行适配,Adapter可以一次性给多个Adaptee添加功能2)使得重新定义Adaptee的部分希望变得困难注意事项:1)Adapter的匹配程度2)可插入的Adapter3)使用双向适配器通过透明操作实现:可插入的适配器的实现方法:使用抽象操作、使用代理对象、参数化的适配器组合模式:意图:将对象组合成数结构以表示“整体—部分”结构,组合模式使得用户对单个对象和组合对象的使用具有一致性适用性:1)想表示对象的“整体—部分”的结构2)希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的对象效果:1)通过递归组合,在客户端代码中,任何用到基本对象的地方都可以使用组合对象2)简化客户代码,客户可以一致地使用组合结构和单个对象3)使得更容易添加新类型的组件4)设计一般化,由于容易添加新组件,也将容易带来新问题装饰模式:意图:动态地给一些对象添加一些额外的职责。
别名:包装器模式适用性:1)在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责2)处理那些可以撤销的职责3)当不能采用生成子类的方法进行扩充时。
效果:1)比静态继承更灵活2)避免在层次结构高层的类有太多的特征3)Decorator余它的Component不一样4)有许多小对象使用注意事项:1)接口的一致性2)省略抽象的Decorator类3)保持Component类的简单性行为模式:迭代器模式:意图:提供一种方法顺序访问一个集合对象中的各个元素,而不暴露该对象的内部表示别名:游标适应性:1)访问一个聚合对象的内容而无需暴露它的内部表示2)支持对聚合对象的多重遍历3)支持多重迭代效果:1)它支持以不同的方式遍历一个聚合2)简化了聚合的接口3)在同一个聚合上可以有多个遍历观察者模式:意图:定义对象间的一对多的关系,当一个对象的状态发生变化时,所有依赖于他的对象都得到通知并被自动更新别名:依赖,发布——订阅适用性:1)当一个抽象模式有两个方面,其中一个方面依赖于另一个方面,将这二者封装在独立的对象中以使它们可以各自独立地改变及复用2)当对一个对象的改变需要同时改变其他对象,而不知道有多少对象有待改变3)当一个对象必须通知其他对象,但又不能假定其他对象是谁效果:1)目标和观察者间的抽象耦合2)支持广播通信3)意外的更新状态模式:意图:允许一个对象在其内部状态发生改变时改变了它的询问,对象看起来似乎改变了它的类别名:状态对象适用性:1)一个对象的行为取决于他的状态,并且它必须在运行时刻根据状态改变它的行为2)一个操作中含有庞大的多分支语句,并且这些分支依赖于该对象的状态效果:1)将有特定效果的行为局部化,并将不同状态的行为分割开来2)使得状态转换显示化3)State对象可被共享体系结构:定义:软件体系结构包括构成系统的设计元素的描述,设计元素的交互,设计元素组合的模式,以及这些模式中的约束。
意义:1)体系结构是风险承担者进行交流的手段2)体系结构有助于系统级关注点的理解3)体系结构是早期设计决策的体现4)软件体系结构是可传递和可重用的模型作用:软件系统的体系结构定义系统由计算构件和构件之间的相互作用组成;体系结构还指出了系统需求和已构建系统的元素之间的对应关系,能为设计方案的选择提供基本原则。
研究内容:1)通过提供一种新的体系结构描述语言(Architectural Description Language)解决体系结构描述问题2)体系结构领域知识的总结性研究。
3)针对特定领域的框架的研究。
4)软件体系结构形式化支持的研究。
框架、体系结构、设计模式三者的比较:1)设计模式是对在某种环境中反复出现的问题以及解决该问题的方案的描述,比框架更抽象;2)框架可用代码表示,也能直接执行或复用,而对模式而言只有实例才能用代码表示3)设计模式是比框架更小的元素,一个框架中往往含有一个或多个设计模式,框架总是针对某一特定应用领域,但同一模式却可适用于各种不同的应用。