软件构造-凯发k8官网下载客户端
|
|
|
教学公告
一、教学安排
内容:
第20章 迭代器模式
第21章 中介者模式
二、重点难点
1、重点:掌握中介者模式和迭代器模式的动机及结构
2、难点:理解中介者模式和迭代器模式实现原理
三、课前思考
在软件设计过程中,经常会碰到要实现多个对象相互间进行交互的情形(图1)。
如果设计不好,那么随着我们引入的对象越来越多,我们的系统将会变得关系非常复杂,导致维护困难。如果我们选择中介者模式来处理对象之间 交互就可以简化我们的对象之间的交互的结构。 除了上面的思考题,如果你有时间和兴趣你还可以思考下面的交互情形并编程模拟实现:
区块链涉及密码学、哈希算法、拜占庭问题、共识算法、故障模型、网络模型等诸多知识,也在金融等领域有广泛的应用。本题中,我们需要实现一个简单的区块链系统。
在一个分布式网络中,有n个节点通过m条边相连,节点编号从1至n。每个节点初始化都有一个相同的“创世块”,链长都为1,每个节点在整个过程中都需要维护一条主链,任何操作都只在主链上进行。在整个系统中产生的每个新块都有唯一的整数编号,创始块的编号为0,其余块的编号都为正整数。当某个节点的链更新时,会将它的主链发送给它相邻的节点(邻居);而当节点收到链时,决定是否更新自己的主链。
下列情况可能会导致某个节点的链更新:
·某个节点接收到邻居发送过来的链,与当前自己的主链进行比较:如果接收到的链更长,则将其作为自己的主链;
如果收到的链长度与自身主链相同,且最后一块编号更小,则将其作为自己的主链
如果接收到的链更短,则直接忽略该链。
四、阅读材料
中介者模式: