您申请加入课程:软件构造

软件构造

华南师范大学软件工程专业

https://www.scholat.com/course/rjgz
  • 创建者

    Creator

    潘家辉
  • 活跃度

    Activeness

  • 访问量

    Visits

    79644

教学公告

20软工第5周安排
[作者: 潘家辉  发布时间:2023-03-17 19:52:37  浏览次数:438次]

一、教学安排

讲授第10章的内容 149-167页

讲授第11章的内容168-183页

二、重点难点

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

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

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

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

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

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

三、课前思考

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

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

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

(1) 类的个数急剧增加

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

(2) 系统扩展性不好

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

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

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

四、师说

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

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

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

五、阅读材料

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

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

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


相关课程

扫一扫二维码,快速加入本课程!

放大二维码 查看使用方法
关闭