软件工程 课件 第9章 软件设计模式.pptx

  1. 1、本文档共46页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Software第9章 软件设计模式本章内容:软件设计模式的基本概念和组成要素简单介绍常见的23种设计模式重点介绍其中的6种设计模式engineeringSoftware9.1 设计模式概述设计模式(Design pattern)代表了最佳的实践,是在特定环境中解决问题的一种方案,通常被有经验的面向对象的软件开发人员所采用。是软件工程的基石,如同大厦的一块块砖瓦。使用设计模式的目的:重用代码、让代码更容易被他人理解、保证代码可靠性。(1)可以完美地解决很多问题,每种模式在现实中都有相应的原理来与之对应。(2)每个模式都描述了一个在我们的环境中不断出现的问题,描述了该问题的解决方案的核心。(3)可以无数次地重用那些已有的解决方案,无需再重复相同的工作。engineeringSoftware9.1.1 设计模式的基本要素设计模式4个基本要素:模式名称(pattern name),问题(problem),解决方案(solution),效果(consequences)。1.模式名称模式名称是一个助记名,用一两个词来描述模式的问题、解决方案和效果。模式名可以帮助设计人员进行思考,便于设计人员与其他人交流设计思想及设计结果。找到恰当的模式名也是设计模式编目工作的难点之一。2.问题即要解决的问题,是在面向对象的系统设计过程中反复出现的特定场景,它导致我们采用某个模式。描述问题存在的前因后果,有时候会包括使用模式必须满足的一系列先决条件。engineeringSoftware9.1.1 设计模式的基本要素3.解决方案描述设计的组成成分,成分之间的相互关系及各自的职责和协作方式。模式就像一个模板,提供设计问题的抽象描述和怎样用一个具有一般意义的元素组合(类或对象组合)来解决这个问题。4.效果描述了模式应用的效果及使用模式应权衡的问题。描述设计决策时,并不总提到模式效果,但它们对于评价设计选择和理解使用模式的代价及好处具有重要意义。软件效果大多关注对时间和空间的衡量,也表述了语言和实现问题。因为复用是面向对象设计的要素之一,所以模式效果包括它对系统的灵活性、扩充性或可移植性的影响。engineeringSoftware9.1.2 设计模式分类1994 年,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四人合著出版了一本书:《设计模式 - 可复用的面向对象软件元素》,首次提到了软件开发中设计模式的概念。他们所提出的设计模式总共有 23 种,主要是基于以下面向对象设计原则:对接口编程而不是对实现编程,优先使用对象组合而不是继承。这些模式可以分为三大类:创建型模式、结构型模式、行为型模式。engineeringSoftware9.1.2 设计模式分类1.创建型模式:工厂方法、抽象工厂模式、单例模式、建造者模式、原型模式。这些设计模式主要用于创建对象,提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。2.结构型模式:适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式、代理模式。这些设计模式主要用于处理类和对象的组合。继承的概念被用来组合接口和定义组合对象获得新功能的方式。3.行为型模式:责任链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板模式、访问者模式。这些设计模式特别关注对象之间的通信,主要用于描述对类或对象怎样交互和怎样分配职责。engineeringSoftware9.2抽象工厂模式抽象工厂模式是为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。9.2.1 从简单工厂到工厂方法到抽象工厂1.简单工厂模式简单工厂是工厂方法的特例,由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式中包含的角色:(1)工厂(Creator)角色:简单工厂模式的核心,负责创建所有实例的内部逻辑。(2)抽象产品(Product)角色:简单工厂模式所创建的所有对象的父类,负责描述所有实例共有的公共接口。(3)具体产品(Concrete Product)角色:是简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例。engineeringSoftware9.2.1 从简单工厂到工厂方法到抽象工厂实现一个包含加、减、乘、除的简单计算器,采用简单工厂模式的UML类图:engineeringSoftware9.2.1 从简单工厂到工厂方法到抽象工厂2.工厂方法定义一个用于创建对象的接口,让子类决定实例化哪一个类,类的实例化延迟到其子类。去掉了简单工厂模式中工厂方法的静态属性,使得它可以被子类继承。核心工厂类不再负

文档评论(0)

xiaobao + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档