软件系统设计中所采用的设计模式综述

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

对于大规模的复杂软件系统来说,软件体系架构设计比起对程 序的算法和数据结构的选择和设计已经变得明显重要得多。
因此,人们逐渐认识到软件体系架构设计的重要,如
Rational公司提出了“以架构为中心”的统一软件开发过程 (RUP)等。
(2)软件体系架构设计中的核心问题
能否使用重复的体系架构---也就是能否达到体系架 构级的软件重用。设计的目标是希望能在不同的软件系 统中使用同一体系架构,以减少设计的重复性。
(2)GRASP模式(通用职责分配 软件模式 )
它能够帮助设计人员如何更好 地设计类和接口(个数、成员 方法)、类之间的关系、对象 创建等方面的问题
GRASP同时也是学习使用GOF 代 码设计模式的基础,因为它指
导类的职责和关系分配如何更 加合理 信息专家(Information expert) 控制器(Controller) 创建者(Creator) 多态性(Polymorphism) 高内聚(High Cohesion) 纯虚构(Pure Fabrication) 低耦合(Low Coupling)
软件系统设计中的设计模式综述
软件系统设计中的设计模式综述
在本课程中重点了解如下内容
软件体系架构产生背景 设计模式的产生及分类 对GOF设计模式的几点感悟 如何学习和掌握设计模式
1、软件体系架构设计
(1)软件体系架构产生背景
我们在学习C语言时 应该了解它!
早期的软件开发实现,人们把软件设计的重点放在数据结构和 算法的选择Байду номын сангаас,如Knuth提出了数据结构+算法=程序。
2、Design Patten(设计模式)概述
(1)设计模式是什么
设计模式是一套被反复使 用、多数人知晓的、经过分类 编目的、系统架构和代码设计 经验的总结。 (2)为什么在软件开发中要应 用设计模式 使用模式的主要目的是为 了获得可重用代码或者体系结 构、让代码和系统架构更容易 被他人理解、并保证代码可靠 性和代码的质量。
要让我们的程序中的类和组件尽可能地被“可重用” 和“可扩展”。
(4)设计模式是思想——设计模式并不是一种具体的“技 术”,它讲述的是思想和方法并且与具体的语言和开发平 台技术无关
比如:解决接口变化的外部服务问题时可以使用“适配器模式”; 而解决变化的算法及策略问题时(客户定制业务规则)可以使 用“策略模式”,同时也可以加入组合模式来解决策略的冲突; 而使用观察者模式降低表示层与业务层之间的耦合。
(3)GOF是指“功能代码实现”方面的设计模式
它着眼于通用原理的最佳功能实现代码,注重的是如何组 织代码,并构建一种合理的可复用的功能实现代码;
并对程序代码中反复出现的问题进行标准化的功能实现。
GOF的23种设计模式的主要分类----创建型:5种;结构型: 7种;行为型:11种。 注意:
说起设计模式,经典的是GoF23种设计模式。我们通常所 说的设计模式就隐含地表示为“面向对象的代码设计模式” (GOF设计模式)。 但这并不意味着“设计模式”就等同于“面向对象代码设 计模式”,也可能是系统架构设计模式等。
(4)系统体系架构设计方面的模式
这些模式更多的是着眼于不同业务中共性的解决方案 的设计,是有关大尺度和粗粒度的设计——如“J2EE Core Pattern”中的大部分模式
系统体系架构模式是描 述软件系统里的基本的 结构和组织关系、各自
的责任的法则和指南。
4、区分GRASP模式和GOF模式的不同 (1)应用的目的方面
您能够区分框架 和模式吗? 您能够区分这三种不同 层次模式的不同吗?
3、设计模式的分类
(1)软件开发中的各种模式
通用职责分配软件模式(GRASP模式---General Responsibility Assignment Software Patterns ) 代码设计模式(如GOF) 系统架构模式(如J2EE Core Pattern、VS.Net架构)
您知道面向对象类设计 中有哪些原则吗?
GRASP指导如何进行对象的职责分配,而GOF则指导如何 实现对代码优化和标准化的功能实现。 GRASP(通用责任分配软件模式)着重考虑设计类的原则 以及如何分配类的功能;而GoF模式则建立在GRASP的基 础之上,并遵循GRASP的原则,着重考虑类设计的具体功 能实现、类的交互以及类的功能实现的代码质量。
什么是“好的” 软件?
什么是“好的”软件?
(3)利用模式开发所带来的优点
首先,不必做重复劳动,因为模式是一种指导和经验的总 结
在一个良好的指导下,会得到解决问题的最佳办法:包括 系统架构和类的职责分配、功能实现代码的最佳实现。
(3)在应用模式时所应该要注意的要点
模式有不同的领域,建筑领域有建筑模式 软件设计领域也有设计模式。
(2)应用的场合方面
GRASP适用于对象分析和设计阶段,而GOF适用于编程实现 阶段 当然,它们都是要“封装变化”,使程序最大程度地包容 变化,不会因变化而导致大量地修改代码。
5、对GOF 设计模式的几点感悟
(1)整个GOF设计模式贯穿一个原理
仅为本人的见解, 不完全正确!
面对接口编程,而不是面对实现类(少用继承关系)
(3)软件体系架构模式的产生 基于这个目的,许多学者们开始 研究和实践软件体系架构的模式 问题。 在<Pattern-Oriented Software Architecture (面向模式的软件 体系架构)>一书中首次提出了8 种典型的体系结构模式(也就是 后面的系统架构设计模式)。
在此时期关注的重点 是如何实现重用
“多用组合少用继承” “隔离和封装变化”(哪里有变化、 封装在哪里?) “对升级开放,对修改封闭” (OCP)。 为什么设计模式都只针对具备 了抽象能力的语言(比如C++、 Java、C#等),就是因为设计模 式所研究的实际上就是如何合理 地去“抽象”和“封装”。
(2)目标和原则——通过面向接口编程,从而可以实现把 “调用”与“实现”分离,从而达到降低“源与目”的 耦合度,增强灵活性和适应变化。 (3)设计模式反复向我们强调一个宗旨
相关文档
最新文档