软件工程5-3

上传人:ji****n 文档编号:54338745 上传时间:2018-09-11 格式:PPT 页数:138 大小:1,019KB
返回 下载 相关 举报
软件工程5-3_第1页
第1页 / 共138页
软件工程5-3_第2页
第2页 / 共138页
软件工程5-3_第3页
第3页 / 共138页
软件工程5-3_第4页
第4页 / 共138页
软件工程5-3_第5页
第5页 / 共138页
点击查看更多>>
资源描述

《软件工程5-3》由会员分享,可在线阅读,更多相关《软件工程5-3(138页珍藏版)》请在金锄头文库上搜索。

1、现代软件工程,第五部分软件体系结构与系统概要设计,体系结构的基本问题-1 软件系统的框架与体系结构-2 面向对象的设计模式-3 MVC结构与用户界面设计-4 基于构件的软件体系结构-5 从需求分析到系统设计过程-6 软件系统设计规范管理-7,第五部分 软件体系结构与系统概要设计,第五部分 软件体系结构与系统概要设计,第三章 面向对象的设计模式设计模式的概念-3.1 创建型模式-3.2 结构型模式-3.3 行为型模式-3.4 设计模式的现实作用 -3.5,设计模式(Design Patterns) 模式:一种趋于固定的结构方式 例如:悲剧-哈姆雷特、言情-台湾琼遥、武打动作片-成龙、惊险片-美国

2、大片等 软件设计模式:是软件设计中总结出来的、广泛应用和成熟的结构和结构关系 成功的模式,能针对特定问题,采用成熟和成功的方法,比重新设计要好的多 建筑师C.Alexander给出的经典定义是:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相同的工作。 与艺术不同,工程领域,对经多年的磨练、完善和提高而获得的成功模式,愿意加以反复使用,模式为重用提供了基础,3.1 设计模式的概念,注册处理,接受受理请求/显示处理结果,程序模块接口接口 好处:灵活 缺点:控制复杂,在体系结构设计过程中,设计模式一

3、般应用在模块与模块间的结构设计上,设计模式,面向对象的设计模式,流程表也是一种设计模式:表驱动模式 什么叫“表驱动”? 直接调用与间接调用 间接调用的好处:一种灵活性 控制与执行的隔离 变化体现在“表”上 可以更进一步在表上做文章:数据结构 系统的控制最后取决与“表”的内容和表的表现形式 所以,系统被表所驱动 这是最简单的控制方式,面向对象的设计模式,电子工程师使用集成电路来解决新问题的特定元素,而不是从头开始设计。这就是一种典型的设计模式应用 面向对象的设计模式最早出现在20世纪70-80年代 1987年W.Cunningham和k.Beck引入建筑师C.Alexander的模式概念。E.G

4、amma在其博士论文中,总结和归纳了现有的设计模式,并将其应用到图形用户界面应用程序中。 由E.Gamma、R.Helm、R.Johnson和J.Vlissides(又称为:四人帮)合著的Design Patterns_elements of Reusable Object-Oriented Software推动了面向对象设计模式的发展,面向对象的设计模式,设计模式是系统架构的基础,为普通面向对象设计,提供了解决方案 模式以一组交互类的形式出现,用户根据需要定制这些交互类以形成专门的设计 设计模式可以使人们可以更加方便地重用成功的设计方案,提高软件的灵活性和可复用性,也提高了设计文档管理的有效

5、性和可维护性 设计模式是一种实践的总结,是OO最直接的表现。 设计模式常用的有23种,面向对象设计的模式(最主要的23个,及一些补充) 构造型模式:类和对象创建过程中的不同模式 抽象工厂、构造器、工厂、原型、单件 整体-部分、计数指针、视图句柄 结构型模式:不同类和对象之间的不同静态结构 适配器、桥接、组合、装饰、外观、享元、代理 主从、模型-视图-控制、表示-抽象-控制 行为型模式:类和对象的不同职责与行为关系 责任链、命令、解释器、迭代器、中介者、备忘录、观察者、状态、策略、模板方法、访问者 生存周期、发送-接收者、客户-分遣-服务器、出版-订购者、反射,面向对象的设计模式,如何描述一个模

6、式,模式的四个基本要素 模式名:pattern name 用一个词来简单表示模式的问题、解决方案和效果。恰当和贴切的模式名,可以使我们对模式的作用“一目了然” 问题:Problem 描述应该在何时使用模式,它针对哪些特定的设计问题、问题的前因和后果,以及使用模式的先决条件。 解决方案:Solution 是模式本体,模式是如何构成的、它们之间的相互关系和责任。模式是一个问题类的解决方案的抽象模板,因此,它不描述具体的设计或实现,只提供设计问题的抽象思路。 效果:Consequences 描述模式的应用效果和使用模式应权衡的问题。这是在设计阶段进行设计选择时,不可避免要考虑的问题。 好处和代价:时

7、间和空间、复用和灵活性、可扩展和可移植性等等的平衡,3.2 对象创建型模式:creational patterns,对象实现: 根据系统的抽象分析,我们设计了类以及类的内部属性、数据、可完成的操作和接口 然后,我们可以通过实例化类来创建对象,此对象是类的实例,所谓实例化,就是为对象具体分配数据存储空间,并将操作与这些数据联系起来 同一个类可以根据需要被实例化为不同的对象(多态性) 新的类可以通过已存在的类的继承来定义,子类继承了父类时,子类也包含了父类的数据和操作,子类的实例对象包含了子类和父类定义的数据,能完成子类和父类定义的操作 子类还可以通过重定义的方式,扩展父类的定义 继承是类的复用的

8、主要方法,因为父类的特性对子类是透明可视的,因此称为“白箱”复用 另一种复用方法是对象组合,称为“黑箱”复用。,对象创建型模式:creational patterns,对象实例化过程概念与实现的补充:,对象创建型模式:creational patterns,创建型模式: 创建型模式抽象了实例化的过程,这样,使得系统与具体对象的创建、组合和表示独立开来 有二种创建模式:类创建和对象创建 类创建模式使用继承改变被实例化的类 对象创建模式将实例化委托给另一个对象 创建型模式把系统使用了哪些具体的类的信息封装了起来 模式隐藏了这些类的实例是如何被创建和放在一起的 整个系统关于这些对象所知道的仅是由抽象

9、类所定义的接口 因此,模式使得类和对象什么被创建、谁创建、怎么被创建、何时创建等是隐蔽和无关的。这样,使你可以用结构和功能差别很大的“产品”对象,来配置新的系统,对象创建型模式:creational patterns,基本的创建型模式: 抽象工厂:Abstract Factory 生成器:Builder 工厂方法:Factory Method 原型:Prototype 单件:Singleton 我们用设计模式一书的“创建迷宫”的一个通用的例子,来介绍这5个模式。,对象创建模式 1 :抽象工厂(Abstract Factory),意图:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具

10、体的类 动机: 考虑一个支持多种窗口风格的文字处理工具,滚动条、窗口、按扭等具有不同的外观。如果这个软件可以支持多平台,我希望在新平台上保持一致的风格(形式和风格的可移植),但我并不关心在新的平台上是如何具体实现这些风格的,应用程序调用者,文字处理工具平台(现在讨论的对象),系统平台1,系统平台2,系统平台3,我要在不同的平台上保持相同的窗口形式和风格、但我又不想为每个平台编写一个版本。,对象创建模式 1 :抽象工厂(Abstract Factory),思路: 为了解决这个问题,我们定义一个抽象类,这个类声明了一个用来创建每一种基本窗口组件(滚动条、按扭等)的接口,而具体子类则实现特定的风格(

11、各种风格的滚动条)。客户用这个接口获得自己想要的风格的窗口组件时,并不考虑、也不知道是哪个具体类为它们完成了这个工作,只需提出自己的要求(参数) 工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。当产品的本质发生修改时,才需要修改接口,否则只在工厂类做相应修改。,应用程序调用者(用户),抽象的窗口组件类(例如:按扭类)接口,按扭子类1,按扭子类2,按扭子类3,系统平台1,系统平台2,系统平台3,针对不同平台的具体实现在这里!用户不同关心哪个子类、是如何具体实现,用户针对不同平台的接口是统一的,也只有一个接口,客户类,工厂类,用户针对不

12、同平台的接口是统一的,也只有一个接口,是麦当劳还是肯特基的炸鸡翅,在细节上会略有不同,但不止本质一一样的,适用性(多种需要与多种选择) 一个系统要独立于它的产品的创建、组合和表示时 例如:一栋大楼,设计和建造者关心的是大楼的建筑风格和适用性能,以及是否有满足要求的预制件。而这些预制件是什么时候生产的、由谁生产的,我们并不关心。 一个系统要由多个产品系列中的一个来装配时 我们有很多可选的预制件,在建造不同的大楼时,根据风格和功能的需要,我们从多种预制件库中选择一种预制件。我们关心的是预制件是否符合我们的要求,而不是它的制造过程。 采用一系列的产品线设计方法,而产生具体产品时,采用由它们中的某些制

13、品组合而成时 根据制品(类库)设计,我们关心的只是制品的接口,而不是具体的实现 多种需要与多种选择所站的观察点不同(选择与被选择),但结果都是一样的:只看接口(标准、要求),不管过程,对象创建模式 1 :抽象工厂(Abstract Factory),抽象工厂应用的案例协议栈的产品线模式,结构,对象创建模式 1 :抽象工厂(Abstract Factory),AbstractFactory:声明创建2个抽象产品对象(A、B)的接口 ConcreatFactory1/2:实现创建具体产品对象的操作 AbstractProductA/B:为各产品对象声明一个接口 ProductA1/A2/B1/B2

14、:定义一个将被相应的具体工厂创建的产品对象、 实现AbstractProduct接口 Client:仅使用由AbstractFactory 和AbstractProduct类声明的接口,抽象调用,返回接口,效果 优点: (1)分离和封装了负责具体创建产品对象责任和过程的类,客户看不见这些过程,也不会出现在客户的代码中,客户只使用抽象接口操作。 (2)易于交换产品系列 (3)易于保持产品的一致性 缺点: Abstract Factory确定了产品的集合,要增加新的product,就要修改Abstract Factory类和它的所有子类。,对象创建模式 1 :抽象工厂(Abstract Facto

15、ry),对象创建模式2:生成器(Builder),意图 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 动机 例如:一个文字处理工具应能支持多种文档格式的文件处理,可处理文档的格式在不断增加,但文字处理器系统应保持稳定 在复杂对象的构造过程中,允许同样的构造过程能够加入新的被构造元素,使得“构造过程结构化” 适用性 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时 当构造过程必须允许被构造的对象有不同表示时,对象创建模式2:生成器(Builder),一个复杂对象(不同格式的文本)的构建(转换)与它的表示(阅读)分离,使得同样的构建过程可以创建不同的表

16、示(更多格式的文本),一个文本阅读器的呈现部分,文本格式的转换部分,转换格式1,转换格式2,转换格式3,格式1文本,格式2文本,格式3文本,独立于阅读器的转换器称为生成器,阅读器称为导向器,阅读器,转换格式N,格式N文本,转换器,生成器与抽象工厂的区别 功能是相似的,抽象工厂也能创建复杂对象 但生成器模式侧重一步步地构造一个复杂对象,并在最后返回结果,而抽象工厂着重简单、多产品对象,并一次返回结果,结构,Builder:为创建一个Product对象的各个部件指定抽象接口 ConcreatBuilder:实现Builder的接口以构造和装配该产品的各个部件 Director:构造一个使用Builder接口的对象 Product:表示被构造的复杂对象,对象创建模式2:生成器(Builder),

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 初中教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号