一些解释:有几台机器(主机)需要通知某些资源机器上某些数据的任何更改。资源机器一直检查数据,如果有任何更改,它会通知所有听众。
据我所知,我应该使用Observer模式,可能是Absrtact Factory进行泛化,还有什么?
据我所知,资源机应该用作服务器(java.net.serversocket)作为客户端(java.net.socket)向侦听器发送特殊消息并获取请求?并且所有其他机器需要用作服务器(以接收关于任何数据变化的消息)作为客户端(发送获取新数据的请求)。我是对的吗?
您可以向我解释实现通知系统的任何其他方面吗?可能它使用JMX很有用,但我觉得这个问题太庞大了?
答案 0 :(得分:1)
您可以查看RPC之类的内容。这使您可以实现观察者模式,但接收对象放在另一个主机上。
这样,观察者在不同主机上的事实对其余代码是透明的。
答案 1 :(得分:1)
嗯,这几乎描述了观察者模式。
在“服务器”上创建与每台远程机器关联的客户端对象可能最终需要某种工厂。
话虽如此,试图找出可以预先应用于问题的设计模式通常是错误的选择。
答案 2 :(得分:1)
答案 3 :(得分:1)
我认为您不应该在考虑设计模式,通知(正如您为系统设想的那样)和JMX。你是从整个过程的完全不同的层混合和东西。模式不直接应用于整个系统,JMX不是特定类别系统的实现。深入研究它们对你没有帮助。我认为你应该首先考虑更多关于你想要构建的系统,因为在我看来,你试图通过首先探索抽象构造模式和特定技术来找出你想要构建的东西。它应该是相反的方式。 Pod对你的问题发表评论。就像你在设计汽车并询问有关轮胎品牌和涡轮机类型的信息之前,我们已经决定了悬架类型或底盘甚至是汽车的类型。
答案 4 :(得分:0)
有时,发布者 - 订阅者是实施通知系统的最佳方式。