学校云 建设你的专属在线教育平台
中国大学MOOC
SPOC学校专有课程
设计模式
分享
spContent=GoF的23种软件设计模式正好解决了其中的主要问题。设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,它为大学本科高年级学生有关软件设计提供必要的指导思想,它使学生掌握代码编制真正工程化。
—— 课程团队
课程概述

       开设本课程的目的是使学生能充分掌握GoF的23种设计模式,提高他们的软件开发能力。可以采用“任务驱动”的教学方法,根据学生的特点分析设计模式的实例,训练其编程的基本方法和技能,为进一步学习后续专业课程和将来从事应用软件开发奠定良好的程序设计基础。

      课程内容主要包括:5种创建型模式(单例模式、原型模式、工厂方法模式、抽象工厂模式、建造者模式),7种结构型模式(代理模式、适配器模式、桥接模式、装饰模式、外观模式、享元模式、组合模式)和11种行为型模式(模板方法模式、策略模式、命令模式、职责链模式、状态模式、观察者模式、中介者模式、迭代器模式、访问者模式、备忘录模式、解释器模式)等相关知识,以及面向对象的设计原则。

     通过课程的学习,学生应该学会应用7种面向对象的设计原则进行面向对象的编程;掌握代码编制真正工程化技术,为今后项目开发打下基础;掌握综合应用GoF的主要几种软件设计模式进行IT项目的综合设计与实践。


    

授课目标

1. 使学生理解面向对象的设计原则与面向对象的编程技术。

2. 使学生理解GoF的主要几种软件设计模式的定义与特点、结构与实现,以及模式的应用场景、应用实例与扩展方向。

3. 使学生掌握应用几种常见的创建型模式的使用方法。

4. 使学生掌握应用几种常见的结构型模式的使用方法。

5. 使学生掌握应用几种常见的行为型模式的使用方法。


 

成绩 要求

采取百分制

课程大纲
预备知识

Java等面向对象程序设计语言

UML及其工具


参考资料

教材:

程细柱,软件设计模式(Java版),2018年,第1版,人民邮电出版社。



参考书

1. 刘伟,设计模式,2011年,第1版,清华大学出版社。

2. 青岛东合信息技术有限公司,设计模式-(Java版),第1版,2012年,电子工业出版社。

3. 王翔,设计模式Java版-模式工程化实现及扩展,第1版, 2012年,电子工业出版社。

4. Object.Oriented.Thought.Process.The.2nd.Edition.

5. Head.First Object Oriented Analysis and Design (2006.11)

6. Applying.UML.and.Patterns,3rd.Edition , Graig Larman

常见问题

【1】为什么要设计、为什么恰当的软件设计是一种过程、它很重要吗?

答:良好的设计,能够使待开发系统更准确地满足客户的需要,同时有更大的可能性满足今后的需求变化,比如 客户业务扩展、技术更新、运行环境的改变等,极大地降低客户运营成本。

软件设计有一定的步骤,它的输入是领域模型、用例模型、前景文档、补充需求说明文档等资料。在此基础上,给出初步的架构设计、模块划分、类图。对一些重要的功能模块,通过设计顺序图可以动态检测 其实现的可行性、对部分模块通过状态图来分析各种状态下处理的各种事件等。如果遇到不合适的地方,需要返回前一阶段进行改进。设计是一个需要不断演化、完善的过程。

设计很重要!


【2】什么是面向对象设计、有没有超越面向对象设计的设计方法?

答:以面向对象的思维方式去研究、分析待开发系统,找出其中的对象、对象的属性、对象之间的关系、为对象分析分配职责,在对象的分工协作过程中完成整个系统的功能,这是面向对象设计。

谈不上“超越面向对象设计”。设计的方式目前看来主要有两大类: 面向功能分析设计、面向对象分析设计。对一个大而复杂的系统,一般先用面向功能的方式,对系统进行分层、或者划分子系统的方式。对某一个具体的子系统,考虑采用面向对象的设计方式。


【3】什么是好的设计、如何区分好的设计与坏的设计?

答:好的设计,有一些质量属性可以作为衡量的标准:如,可扩展性、可移植性、可靠性、可重用性等。符合这些性质的设计方案,一般而言,就是好的设计。

至于如何区分,笼统的标准就是 “满足客户需要的设计”,就是好的设计。理论一点评判,就是满足上述的质量标准。


【4】如何去设计、针对通常的设计问题,有没有现成的“处方”?

有,设计模式(design pattern)。前人为了解决某类问题,给出了很好的解决方案。当前的待开发系统也遇到类似的问题,可以考虑、借鉴前人的这个解决方案,省时、省力、可靠。