软件设计模式ppt课件
Software Design Pattern
1
第一讲 软件设计模式概述
设计模式的基本概念
✓ 软件危机 ✓ 软件设计模式的定义 ✓ 软件设计模式的必要性与作用 ✓ 软件设计的基本原则 ✓ 软件设计模式学习的前提基础
软件设计模式的主要分类
✓ 创建型模式 ✓ 结构型模式 ✓ 行为型模式
工厂方法模式
3
设计模式的基本概念-软件危机
软件危机的产生原因
✓ 与软件本身的特点有关。软件不同于硬件,它是计算机系统 中的逻辑部件而不是物理部件;软件不会因使用时间过长而 “老化”或“用坏”;在写出程序代码并在计算机上试运行 之前,软件开发过程的进展情况较难衡量,软件质量也较难 评价,因此管理和控制软件开发过程十分困难;软件质量不 是根据大量制造的相同实体的质量来度量,而是与每一个组 成部分的不同实体的质量紧密相关,因此,在运行时所出现 的软件错误几乎都是在开发时期就存在而一直未被发现的, 改正这类错误通常意味着改正或修改原来的设计,这就在客 观上使得软件维护远比硬件维护困难;软件是一种信息产品, 具有可延展性,属于柔性生产,与通用性强的硬件相比,软 件更具有多样化的特点。
9
设计模式的基本概念-设计模式
所谓设计模式是对于某一类软件设计问题的可重用的 解决方案。
设计模式的最终目标就是帮助人们利用成功软件设计 师们的集体经验,来设计出更加优秀的软件,解决软 件危机的问题。
引入软件设计模式将成为企业或者个人可持续发展 的必然选择。只有专业,才能在这个领域做得最 好,为社会、企业和个人带来更多的价值
10
设计模式的基本概念-设计模式的特 点
设计模式的特点
✓名称 每个设计模式都有一个名称。
✓可传授性 问题反复出现,解决问题的方案相同,大家都 接受改方案。
✓可重用性 问题反复出现,尽管问题出现的 环境有不同, 但解决方案 要性与作用
✓ 重用设计 重用设计比重用代码更有意义,它会自动带来代码 重 用;
方案,无需重复相同的工作。 通用定义:
模式是一种问题的解决思路,它已经适用于一种实践 环境,并可以使用于其他环境。
8
设计模式的基本概念-生活中的模 式
古人在遇到生活问题时,能通过不断的思考、实 践、总结,最后得到许多解决生活困难的方法。
后人遇到相同问题的时候,也会采用同样的方法, 这些方法就被称为模式。 ✓烤肉-取火 ✓取水-打井 ✓耕田-耕牛
✓ 多用组合少用继承 在面向对象的软件设计中,对于类的扩展,首先想到的是使用类的继承来 实现,由子类继承父类,从而完成对子类功能的扩展。继承的好处是可以 尽量让相同的属性或者功能复用,但是随着项目越来越大,需求的不断变 化,继承就会变得越来越臃肿,后期难以控制和维护。最重要的是,继承 会不分青红皂白地把父类的公有和受保护的方法统统继承下来,而这些方 法可能是子类不需要的功能,会对子类产生一些危害。
4
设计模式的基本概念-软件危机
软件危机的产生原因
✓ 来自于软件开发人员的弱点。其一,软件产品是人的思 维结果,因此软件生产水平最终在相当程度上取决于软 件人员的教育、训练和经验的积累;其二,对于大型软 件往往需要许多人合作开发,甚至要求软件开发人员深 入应用领域的问题研究,这样就需要在用户与软件人员 之间以及软件开发人员之间相互通讯,在此过程中难免 发生理解的差异,从而导致后续错误的设计或实现,而 要消除这些误解和错误往往需要付出巨大的代价;其三, 由于计算机技术和应用发展迅速,知识更新周期加快, 软件开发人员经常处在变化之中,不仅需要适应硬件更 新的变化,而且还要涉及日益扩大的应用领域问题研究。
✓“开-闭”原则,即“对扩展开放,对修改关闭”
13
设计模式的基本概念-设计模式的分类
目前设计模式可以分为两大类:
GOF(Gang of Four)
✓ GOF 是由四位(Erich GAMMA, Richarc Helm, Ralph Johnson, John Vlissides) 具有丰富的面向对象设计经验的大师 给出的,所以被称为“四人帮”模式; ✓GOF设计模式常用的有23种; ✓着重考虑设计的实现,类的交互和软件的质量;
5
设计模式的基本概念-软件危机
软件危机 软件危机主要有以下一些典型表现:1.对软件开发成本 和进度的估计常常很不准确。2.用户对“已完成的”软 件系统不满意的现象经常发生。3.软件产品的质量往往 靠不住。4.软件常常是不可维护的。5.软件通常没有适 当的文档资料。6.软件成本在计算机系统总成本中所占 的比例逐年上升。7.软件开发生产率提高的速度,远远 跟不上计算机应用迅速普及深入的趋势。
一个软件系统要有一个稳定的架构,不会随需求的改变而发生巨大的变动。
因此,高内聚、低耦合是一个软件系统设计中必须遵循的基本原则。
✓ 面向抽象编程 在面向过程的软件开发中,上层组件调用下层组件,就意味着上层组件依 赖于下层组件,当下层组件发生剧烈变化时,上层组件也要跟着一起发生 变动,这将导致软件组件模块的复用性大大降低,从而增加软件开发成本, 使软件结构设计上存在一定的臃肿性,不利于后期系统维护工作。
✓ 为设计提供共同的词汇 每个模式名就是一个设计词汇,其概念使得程序员 间的交流更加 方便;编写开发文档更加容易;
✓重构系统更加容易
设计模式从最初的设计就考虑到变化,因此当需求发生变化时, 一般不会改变整体设计;
✓节约设计时间 ✓可采用任何编程语言实现
12
设计模式的基本概念-设计模式基本原则
✓ 高内聚、低耦合
6
设计模式的基本概念
模式 设计模式 软件设计模式的必要性与作用 设计模式的分类
7
设计模式的基本概念
设计模式的概念最早起源于Christopher Alexander. 每个模式描述了一个在我们的环境中不断出现的问题
以及该问题解决方案的核心。 通过使用模式,我们可以无限次使用那些已有的解决
2
设计模式的基本概念-软件危机
软件危机的含义 软件危机是指在计算机软件的开发和维护过程中所遇到 的一系列严重问题。这些问题不仅仅是不能正常运行的 软件才具有的,实际上,几乎所有软件都不同程度的存 在这些问题。软件危机包含下属两方面的问题:如何开 发软件,以满足对软件日益增长的需求;如何维护数量 不断膨胀的已有软件。