设计模式是面向对象编程的热门话题之一,也是近年来国内外广泛使用和研究的热点。
本书是一本介绍软件设计模式内容及原理的教材,作者以设计模式的概念、原则、分类及构成为出发点,详细分析了24种设计模式。在介绍每种模式时,以一个软件设计开发中的实际问题为引子,探讨一般实现方法的缺陷,进而介绍新模式的结构,再以一个实际的例子展现模式的编程方法,*后对使用模式的效果进行分析,通过应用实例展示设计模式在应用系统开发实践中的应用。同时,本书紧跟业界技术发展,对*的软件架构建模技术进行了分析和介绍。
本书是为有一定编程基础的读者编写的,内容全面,概念清晰,例题丰富,循序渐进,易于学习,是大学计算机专业本科生、研究生学习设计模式的基础教材,也可以作为从事软件研究和软件开发工作有关人员的参考书。
本书是为有一定编程基础的读者编写的,主要介绍设计模式的知识和开发方法。作者参阅了国内外多种设计模式的教材,认真分析了学习者在学习过程中遇到的困难,设计了读者易于学习的教材体系,用大量应用实例深入浅出地讲解设计模式的使用方法和实际效果,使读者易于理解、便于使用,大大减少了初学者学习设计模式的困难。
F O R E W O R D前言
面向对象程序设计已经成为软件设计开发领域的主流,而学习使用设计模式非常有助于软件开发人员开发出易维护、易扩展、易复用的代码。而且,目前越来越多的大学和培训机构也把面向对象技术作为主要教学内容。本书从面向对象的基本概念入手,介绍面向对象程序设计的主要原理和方法,重点探讨了在程序设计中怎样使用著名的24个设计模式。本书编者在十余年的项目开发实践中积累了丰富的开发经验,在近年来的项目开发中,也有意识地大量使用设计模式来提高系统的可复用性。在对各类设计模式的使用中常常沉醉于设计模式精妙的构思和优雅的结构,于是产生了编写一本用实例来透彻讲解设计模式使用的参考书的想法,鉴于高等院校对设计模式相关教材的迫切需要,因此决定将本书以教材的形式撰写。作者于2009年编写了《实用软件设计模式教程》,由清华大学出版社出版。该书出版后,受到了广大读者的欢迎,认为该书概念清晰,叙述详尽,深入浅出,通俗易懂。根据发展的需要,作者于2016年编写了《实用软件设计模式教程(第2版)》,本书第2版相较第1版,对最新的软件架构技术进行了补充阐述,紧跟当前技术发展,同时改用业界使用较为广泛的C#程序设计语言作为设计模式的描述语言,为读者的工作和学习提供有益的帮助。本书严格执行面向对象设计标准并使用实例讲解每个设计模式,使读者易于理解、便于使用,最后一章还用实际项目开发实践中的实例作为例子,介绍各种设计模式在实际项目中综合应用的方法。本书的章节安排如下。第1章为面向对象基础,详细分析面向对象方法,从面向对象方法的产生、面向对象方法的概念引出了面向对象方法的优势,又结合一个具体的应用系统实例,细致分析了面向对象分析、面向对象设计、面向对象编程实现、面向对象的测试以及面向对象软件设计原则的主要步骤和方法。第2章为C#面向对象编程基础,介绍C#语言的相关概念和技术,为后续的设计模式学习打下基础。第3章为设计模式,按创建型、结构型、行为型分类,详细分析23种设计模式,在介绍每个模式时,以一个软件设计开发中的实际问题为引子,探讨一般实现方法的缺陷,进而介绍新模式的结构,再以一个实际的例子展现模式的编程方法,最后对使用模式的效果进行分析。第4章为综合实例,该实例集中使用了多种设计模式,展示设计模式在应用系统开发实践中的应用。第5章为软件架构与架构建模技术,介绍软件架构的定义和发展史,分析了几种常用的软件架构模式,并简要介绍软件架构建模技术。第6章为面向服务的软件架构SOA,简要介绍SOA、SOA的框架及其应用实例。第7章为云计算环境下的软件架构,主要介绍在云计算环境下软件架构的技术和内容。本书的编写过程中,林春喜、杨刚、吴夏、武晓周、姚智海、王婵、陈鹏、闫志浩等人完成了大量校正、录入工作,在此对他们的工作表示感谢。在此谨对所有曾经支持和帮助过我们的同志和朋友表示真挚的谢意。由于我们水平有限,再加上时间紧迫,书中难免有疏漏和不妥之处,盼望专家和广大读者不吝指正。
编者2016年12月
C O N T E N T S
目录
第1章面向对象基础
1.1面向对象方法
1.1.1面向对象方法的特点
1.1.2面向对象方法的基本概念
1.1.3面向对象语言的产生
1.1.4面向对象的优势
1.2面向对象分析
1.2.1概论
1.2.2需求陈述
1.2.3建立对象模型
1.2.4建立动态模型
1.2.5建立功能模型
1.3面向对象设计
1.3.1面向对象设计的准则
1.3.2问题域部分设计
1.3.3人机交互部分设计
1.3.4数据管理部分设计
1.4面向对象编程实现
1.4.1编程语言的选择
1.4.2面向对象程序设计风格
1.5面向对象的测试
1.5.1面向对象测试概述
1.5.2面向对象测试策略
1.5.3设计测试用例
1.6面向对象软件设计原则
1.6.1开放封闭原则
1.6.2单一职责原则
1.6.3里氏代换原则
1.6.4依赖倒转原则
1.6.5接口隔离原则
1.6.6迪米特法则
1.6.7其他原则
本章小结
习题
参考文献
第2章C#面向对象编程基础
2.1类
2.1.1类的字段
2.1.2类的属性
2.1.3类的方法
2.1.4构造函数和析构函数
2.2继承
2.3抽象类
2.4接口
2.5多态
2.5.1虚函数
2.5.2多态
本章小结
习题
参考文献
第3章设计模式
3.1设计模式基础
3.1.1设计模式概念
3.1.2设计模式的基本要素
3.1.3怎样使用设计模式
3.1.4设计模式的类型
3.2创建型模式
3.2.1简单工厂模式
3.2.2工厂方法模式
3.2.3抽象工厂模式
3.2.4建造者模式
3.2.5单件模式
3.2.6原型模式
3.3结构型模式
3.3.1适配器模式
3.3.2装饰模式
3.3.3桥接模式
3.3.4享元模式
3.3.5外观模式
3.3.6代理模式
3.3.7组合模式
3.4行为型模式
3.4.1模板方法模式
3.4.2观察者模式
3.4.3迭代器模式
3.4.4责任链模式
3.4.5备忘录模式
3.4.6命令模式
3.4.7状态模式
3.4.8访问者模式
3.4.9中介者模式
3.4.10策略模式
3.4.11解释器模式
本章小结
习题
参考文献
第4章综合实例武侯预伏锦囊计
4.1问题描述
4.2需求分析
4.3系统类结构
4.4各主要操作的活动图
4.5设计中采用的主要设计模式
4.6程序代码
参考文献
第5章软件架构与架构建模技术
5.1软件架构概况
5.1.1软件架构的发展史
5.1.2软件架构的定义
5.2客户机/服务器模式
5.2.1传统两层客户机/服务器模式
5.2.2经典三层客户机/服务器模式
5.3浏览器/服务器模式
5.4MVC架构模式
5.4.1MVC结构
5.4.2MVC的特点
5.5基于构件的模式
5.6软件架构建模技术
5.6.1软件架构4 1视图模型
5.6.24 1视图模型建模方法
5.6.3软件架构建模的迭代过程
本章小结
习题
参考文献
第6章面向服务的软件架构SOA
6.1SOA简介
6.1.1SOA参考模型
6.1.2SOA的设计原则
6.1.3SOA实现的主要技术规范
6.2SOA的框架
6.2.1以服务消费者为中心的SOA
6.2.2以用户为中心的SOA
6.3SOA实例基于SOA的OA与ERP整合应用
6.4SOA的应用分析
本章小结
习题
参考文献
第7章云计算环境下的软件架构
7.1软件三层架构模型
7.1.1三层软件架构产生的原因
7.1.2三层软件架构介绍
7.1.3三层架构存在的问题
7.2基于云计算的软件架构
本章小结
习题
参考文献