![]() |
|
教学公告
17软件工程《软件构造》第14周安排
一、教学安排
时间:6月1日:
3、4班 : 实验课: 1-2节(8:30-10:00) ; 理论课: 3-4节(10:20-11:50)
1、2班 : 实验课: 5-6节(2:00-15:30) ;理论课: 7-8节(15:40-17:10)
内容:
1、自主实践: 实验6
实验材料: 学者网 http://www.scholat.com/course/T_homeworkList.html?courseId=685
2、授课: 腾讯课堂
第23章 观察者模式(P349-369)
第24章 状态模式(P370-388)
导学视频资料: 砺儒云课堂:https://moodle.scnu.edu.cn/course/view.php?id=9522
腾讯课堂:
https://ke.qq.com/webcourse/index.html?cid=2107503&term_id=102209673&lite=1&from=800021724
二、重点难点
1、重点:掌握观察者模式和状态模式的动机及结构
2、难点:状态模式实现原理
三、课前思考
1、 在程序设计过程中,我们总会遇到这样的情况,当一个对象的状态发生变化时,需要通知其他的对象,让其它对象知道它发生了变化,一遍采取相应的对策。比如在上一次的聊天室工实例,服务器端维护中所有在线用户的列表,如果有新的用户登录或退出时,服务器端需要通知其他的客户端用户,把新登录用户添加到所有客户端的用户列表中或退出的用户从客户端的列表中删除。 如果我们设计不当,比如每个客户端每隔一段时间就向服务器发出轮询请求,如果有用户变动,就新本地列表。采用这种轮询机制,如果时间间隔设置小了,必然会导致很多无谓的网络通信,如果时间间隔设计大了,又不能及时知道在线用户的情况,造成通信不畅。另外,随着用户的不断增多,被轮询的次数也就增多,服务器有被被拖垮的可能。 有没有一种跟合适的方式,既可以减轻服务器的负担,又可以及时地掌握用户的变化?
2 、教程在讲解状态模式的时候使用的例子,如果让你换一种方式来实现,你会怎样做?请尝试使用代码模拟实现你的设计,并分析比较你更喜欢哪种实现方法,为什么?
四、师说
基于抽象的程序设计 是提高程序可拓展性和可维护性最有效的方法。基于抽象的变成,是利用面向对象的程序设计中多态这个重要的特征。没有了多态,就没有基于抽象的程序设计。
五、阅读材料
观察者模式:
https://www.jianshu.com/p/d55ee6e83d66
https://blog.csdn.net/zuoxiaolong8810/article/details/9081079
监听器模式 https://blog.csdn.net/lovexiaotaozi/article/details/102579880
状态模式:
https://www.cnblogs.com/peterxiao/p/11127037.html