设计模式公开课
包子
2014-07
Page 2
引言
设计模式概述
面向对象的设计原则
UML概述
天群
Page 3
弗谷
模式,我们并不陌生……
足球:4-4-2、4-3-3战术模式;
篮球:普林斯顿、三角进攻战术;
LOL:全球流、换线流、四一分推;
建筑:地中海风格、美国西海岸风格;
... ...
Page 4
弗谷
贯豪毫弓买籍
Page 5
弗谷
从三个实例说起……
• 实例一:
庞大的跨平台图像
浏览系统
• 实例二:
不够灵活的影院售
票系统
• 实例三:
重用第三方算法库
时面临的问题
Page 6
弗谷
庞大的跨平台图像浏览系统
实例说明
某软件公司要开发一个跨平台图像浏览系统,要求该
系统能够显示BMP、JPG、GIF、PNG等多种格式的
文件,并且能够在Windows、Linux、Unix等多个操
作系统上运行。系统首先将各种格式的文件解析为像
素矩阵(Matrix),然后将像素矩阵显示在屏幕上,在
不同的操作系统中可以调用不同的绘制函数来绘制像
素矩阵。
Page 7
弗谷
庞大的跨平台图像浏览系统
初始设计方案 Image
{abstract}
BMPImage
BMPWindowsImp
JPGImage GIFImage PNGImage
BMPLinuxImp BMPUnixImp
JPGWindowsImp JPGLinuxImp JPGUnixImp
GIFWindowsImp GIFLinuxImp GIFUnixImp
PNGWindowsImp PNGLinuxImp PNGUnixImp
Page 8
弗谷
庞大的跨平台图像浏览系统
问题
(1) 采用了多层继承结构,导致系统中类的个数急剧增
加,具体层的类的个数 = 所支持的图像文件格式数×
所支持的操作系统数
(2) 系统扩展麻烦,无论是增加新的图像文件格式还是
增加新的操作系统,都需要增加大量的具体类,这将
导致系统变得非常庞大,增加运行和维护开销
Page 9
弗谷
不够灵活的影院售票系统
实例说明
某软件公司为某电影院开发了一套影院售票系统,在
该系统中需要为不同类
系统/图像/Page/弗谷/跨平台/庞大/浏览/增加/Imp/Unix/
系统/图像/Page/弗谷/跨平台/庞大/浏览/增加/Imp/Unix/
-->