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

软件构造

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

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

    Creator

    潘家辉
  • 活跃度

    Activeness

  • 访问量

    Visits

    79180

教学公告

20软工第7周安排
[作者: 潘家辉  发布时间:2023-04-02 16:26:28  浏览次数:392次]

20软件工程《软件构造》第7周安排

一、教学安排

自学第14章的内容216-231页

讲授第15章的内容232-244页

二、重点难点

1、理解外观模式和享元模式的动机和结构

2、掌握外观模式的使用及其优缺点

3、理解迪米特法则

4、掌握享元模式的使用及实践课本实例

5、理解享元模式中的外部状态和内部状态的意义和区别

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

三、课前思考

小明所在的软件公司欲软件公司开发人员通过对围棋软件进行分析,发现在围棋棋盘中包含大量的黑子和白子,它们的形状、大小都一模一样,只是出现的位置不同而已。如果将每一个棋子都作为一个独立的对象存储在内存中,将导致该围棋软件在运行时所需内存空间较大,如何降低运行代价、提高系统性能是开发人员需要解决的一个问题。

思考1:围棋软件的界面部分有什么特点?

思考2:该实例是否还包含了单例模式和简单工厂模式的方案?

思考3:关于Java String类这种在修改享元对象时,先将原有对象复制一份,然后在新对象上再实施修改操作的机制称为“Copy On Write”,大家可以自行查询相关资料来进一步了解和学习“Copy On Write”机制。

四、师说

从字面上如何理解:享: 共享,分享;元: 元素,共同部分,属性;模式: 一种方法。也就是说,享元模式是一种将共同部分共享起来的方法。一个类它可能生成好多对象,但这些对象根据属性值的不同一共分成N类,每种类型中属性值都是一样的。在这种情况下,如果创建好多对象,那么这些对象中很多属性值都是重复的,从而造成了大量的内存浪费。而享元模式能够解决重复对象的内存浪费的问题。

何时使用?享元模式可以避免大量非常相似的对象的开销。好像我们平时开发文本编辑器,在文本文档中可以插入图片、动画、视频等多媒体资料,为了节约系统资源,相同的图片、动画和视频在同一个文档中只需保存一份,但是可以多次重复出现,而且它们每次出现时位置和大小均可不同。这就可以用享元模式。在程序设计中,如果发现需要大量细粒度的类对象来表示数据,而且这些类除了几个参数不同以外,其他的属性都是相同的,这时候就可以使用享元模式。类中相同的属性可以通过工厂类来共享,这些属性就是享元类的内部状态;而那些会变化的属性放在新建的外部对象中,作为参数传递给享元类的函数。

享元模式的优点:享元模式通过共享对象的方式,把所有对象的公共属性存放在同一个对象中,不同的属性存放在外部类中,从而起到了节省存储空间的作用。

五、阅读材料

漫谈设计模式之享元模式(Flyweight)

https://blog.csdn.net/heaven_evil/article/details/70310044

​白话设计——浅谈迪米特法则

https://www.jianshu.com/p/14589fb6978e


相关课程

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

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