17软件工程《软件构造》第5周安排

 

一、教学安排

自学第10章的内容 149-167

讲授第11章的内容168-183

 

导学视频资料在砺儒云课堂:

https://moodle.scnu.edu.cn/course/view.php?id=9522

实验作业在学者网课程平台:

http://www.scholat.com/course/rjgz

 

二、重点难点

1、理解适配器模式的技术要点

2、对比类适配器和对象适配器的优缺点

3、掌握桥接模式的适用场景

4、理解面向对象的合成复用原则及其编程技巧

5、理解关联与继承的关系

大家可以根据自己的情况进行相应的预习

 

三、课前思考

小明所在的软件公司欲开发一个跨平台图像浏览系统,要求该系统能够显示BMPJPGGIFPNG等多种格式的文件,并且能够在WindowsLinuxUnix等多个操作系统上运行。系统需具有较好的扩展性以支持新的文件格式和操作系统。

他们的初步方案多层继承结构,如下图:

通过对初步方案进行分析,发现了下列问题: 

(1) 类的个数急剧增加

由于采用了多层继承结构,具体层的类的个数 = 所支持的图像文件格式数×所支持的操作系统数 12=4*3)。

 (2) 系统扩展性不好

由于每一个具体类既包含图像文件格式信息,又包含操作系统信息,因此无论是增加新的图像文件格式还是增加新的操作系统,都需要增加大量的具体类。

思考1:有没有更好的设计方案?

思考2如果系统中存在两个以上的变化维度,是否可以使用桥接模式进行处理?

 

四、师说

桥接模式是一个非常有用的模式,在桥接模式中体现了很多面向对象设计原则的思想,包括“单一职责原则”、“开闭原则”、“合成复用原则”、“里氏代换原则”、“依赖倒转原则”。熟悉桥接模式有助于我们深入理解这些设计原则,也有助于我们形成正确的设计思想和培养良好的设计风格。

桥接模式和适配器模式的区别在于使用场合不同,适配器模式主要解决两个已有接口间的匹配问题。这种情况下被适配的接口的实现往往是一个黑匣子。我们不想,也不能改变这个接口及其实现。同时也不能控制其演化,只要相关的对象能与系统定义的接口协同工作即可。适配器模式经常用在与第三方产品的功能集成上,采用该模式适应新类型的增加的方式是开发针对这个类的适配器。桥接模式则不同,参与桥接的接口是稳定的,用户可以扩展和修改桥接种的类,但是不能改变接口。桥接模式通过接口继承或者类继承实现功能的扩展。

按照GOF的说法,桥接模式和适配器模式用于设计的不同阶段,桥接模式用于设计的前期,即在设计类的时候将雷规划为逻辑和实现两大类,使他们可以分别进行演化;而适配器模式用于设计完成之后,当发现完成的类无法协同工作时,可以采用适配器模式。如下图的报表处理模块所示:

 

五、阅读材料

3分钟理解桥接模式:笔和画的关系

https://www.cnblogs.com/davidwang456/p/4025926.html

详解设计模式之结构型模式https://zhuanlan.zhihu.com/p/91836046

 


最后修改: 2020年03月29日 星期日 09:40