1 ISpeaker和IListener
1 从演讲者到听众广播信息
在某些情况下,我们需要将一个信息从一个类的对象传播给若干个特定对象,如在聊天室这个应用场景中,服务器得知有人上线,则服务器要将刚上线的人的信息(昵称/ID)广播给所有在线的客户端,这个过程就完成了一次信息的广播,发送者是一个类的某个对象,接收者是特定的群体
这个过程的发送者就是演讲者Speaker,接收者就是听众Listener,通过这种机制,我们让服务器实现ISpeaker接口成为演讲者,让在线的客户端实现IListener接口成为听众
这样只要演讲者发布信息,那么所有合法的听众都会收到相同的信息,演讲者更改信息内容,听众们收到的内容也会变化,采用这种机制能灵活的一对多的发送信息
2 定义接口
(1) ISpeaker
ISpeaker即演讲者需要实现的接口,作为演讲者,它至少需要三个抽象方法
1,将听众加入队列(这里的听众必须实现IListener才有资格加入队列)
2,将听众移出队列(队列中的听众是特定群体,根据需求更改这个群体)
3,广播消息(将消息发布给处于队列中的所有人)
(2) IListener
IListener即听众需要实现的接口,作为听众,它至少需要一个处理消息的抽象方法
1,接收演讲者发布的信息并处理
2 测试与总结
1 实现信息的广播
做两个实体类一个实现ISpeaker作为演讲者,一个实现IListener作为听众,再做一个测试类广播信息
Speaker:
Listener:
Test:
可以看到被加入到了听众队列的Listener类对象们成功接收到了Speaker类对象发布的信息,并作出了处理
2 小结
对于一对多广播信息的机制,不仅仅可以用来发送一个字符串,也可以传递参数,对象等等,当触发特定的机制时,演讲者广播的信息被所有处于队列中的听众所接收来进行处理,作出响应