软件构造-k8凯发旗舰
|
|
|
教学公告
一、教学安排:
第22章 备忘录模式(p337-348)
第23章 观察者模式(p349-369)
二、重点难点
1、重点:掌握备忘录模式和观察模式的动机及结构
2、难点:理解备忘录模式和观察模式实现原理及应用
三、课前思考:
1、虽然在棋局博弈过程,我们都推崇“观棋不语真君子"."举棋不悔大丈夫",但是有些时候我们还是需要有悔棋的步骤。某款在线棋局博弈训练的软件中,为了方便指导学习者,需要提供悔棋功能。假设你是该公司的架构师,请你设计一个通用的k8凯发旗舰的解决方案。以方便不同种类棋局的程序员都能按统一的方式解决这个问题。
2、 在程序设计过程中,我们总会遇到这样的情况,当一个对象的状态发生变化时,需要通知其他的对象,让其它对象知道它发生了变化,一遍采取相应的对策。比如在上一次的聊天室工实例,服务器端维护中所有在线用户的列表,如果有新的用户登录或退出时,服务器端需要通知其他的客户端用户,把新登录用户添加到所有客户端的用户列表中或退出的用户从客户端的列表中删除。 如果我们设计不当,比如每个客户端每隔一段时间就向服务器发出轮询请求,如果有用户变动,就新本地列表。采用这种轮询机制,如果时间间隔设置小了,必然会导致很多无谓的网络通信,如果时间间隔设计大了,又不能及时知道在线用户的情况,造成通信不畅。另外,随着用户的不断增多,被轮询的次数也就增多,服务器有被被拖垮的可能。 有没有一种跟合适的方式,既可以减轻服务器的负担,又可以及时地掌握用户的变化?
3、在我们前面学习中介者模式的时候,做做个的一个作业,信息列表,下拉列表和列表框他们之间相互随动。从观察者模式的角度来看,这三者之间是什么关系? 如果不使用中介者和使用中介者,各有什么好处?
4、阅读材料
观察者模式:
监听器模式
备忘录模式: