2010-02-14 87 views
0

一些解释:有几台机器(主机)需要通知某些资源计算机上某些数据的任何更改。资源机器全时检查数据,如果发生任何更改,则通知所有监听者。什么是适用于通知系统的设计模式?

据我所知我应该使用观察者模式,可能是Absrtact工厂的泛化,还有什么?

据我所知资源机器应该用作服务器(java.net.serversocket)作为客户端(java.net.socket)发送特殊消息给侦听器并获取请求?所有其他机器都需要作为服务器(接收关于数据更改的消息)作为客户端(发送请求以获取新数据)。我对吗?

也许你可以解释我的任何其他方面的实现通知系统?可能它使用JMX很有用,但我认为这个问题太庞大了?

+1

模式描述软件,他们没有实现它们。 – Pod 2010-02-14 13:23:02

回答

1

你可以看看像RPC。这使您可以实现观察者模式,但接收对象被放置在另一个主机上。

这样,观察者在不同主机上的事实对其余代码是透明的。

1

那么,这几乎描述了观察者模式。

某种工厂可能最终需要创建与“服务器”上的每个远程计算机关联的客户端对象。

这就是说,试图找出什么样的设计模式可以应用于问题的前期往往是错误的选择。

0

某些时候发布者订阅者是实现通知系统的最佳方式。

1

我不认为你应该在设计模式,通知(如你设想你的系统)和JMX的同时。你正在混合和来自整个过程完全不同层次的事物。这些模式并不直接应用于整个系统,JMX也不是一个特定类别系统的实现。深入研究并不会对你有所帮助。我认为你首先应该更多地考虑你想要构建的系统,因为在我看来,你首先通过探索抽象的构造模式和特定的技术来试图找出你想要构建的东西。它应该是相反的。 Pod对你的问题发表了评论。这就好比你正在设计一辆汽车,并在决定悬架类型或底盘甚至汽车类型之前询问有关轮胎品牌和汽轮机类型的信息。