在我的项目中,我有点使用发布者/订阅者模式。
我想在我的发布商上有一个树数据结构。每次我修改树中的任何内容(无论是结构更改还是修改节点值),都会将更改集发布给其订阅者。
这些树具有树的本地副本,并在接收到变更集时更改内部结构。连接到发布者时,任何订阅者都应首先要求提供整个树的深层副本。
有人知道现有的java库吗?
欢迎任何提示
答案 0 :(得分:0)
好的,既然我现在找到了一个“解决方案”,我只会在这里发布一般的想法。
我创建了一个实现java.util.Map
接口的类。让我们调用此类DMPublisher<K, V>
,而K
是键类型,V
是地图中值的类型。
还有另一个类也实现了地图界面DMSubscriber<K, V>
。
发布者类开始侦听套接字,直到它被显式关闭。订户在创建时连接到此套接字。
发布者类具有用作缓存的真实哈希映射的属性。对于发布者上的每个操作方法,相应地更改缓存中的相应项。现在通过上面提到的套接字将更新发送给所有订户。
除了地图界面之外,订阅者还可以使用观察者模式监听器来附加。现在,从套接字接收的所有更新都将分发给所有这些侦听器。
在连接时,发布者将当前保存在缓存中的所有数据发送给其订阅者,以便具有一致的状态。
两个类都是同步的,以支持多线程。
如果有人对源代码感兴趣,请随时与我联系。