【问题标题】:What are Design patterns useful for Notification system?什么是对通知系统有用的设计模式?
【发布时间】:2010-02-14 13:09:03
【问题描述】:

一些解释:有几台机器(主机)需要通知某些资源机器上某些数据的任何更改。资源机器始终检查数据,如果有任何更改,它会通知所有侦听器。

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

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

您能解释一下实现通知系统的其他方面吗?使用 JMX 可能很有用,但我认为它对于这个问题来说太庞大了?

【问题讨论】:

  • 模式描述软件,他们不实现它们。

标签: design-patterns jmx notifications


【解决方案1】:

Enterprise Integration Patterns website (http://www.eaipatterns.com/) 很好地概述了消息传递模式。

【讨论】:

    【解决方案2】:

    您可以查看RPC 之类的内容。这使您能够实现观察者模式,但接收对象被放置在另一个主机上。

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

    【讨论】:

      【解决方案3】:

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

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

      话虽如此,试图找出可以预先应用到问题的设计模式通常是错误的选择。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

          有时发布者-订阅者是实现通知系统的最佳方式。

          【讨论】:

            猜你喜欢
            • 2010-11-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-07-18
            • 2019-02-13
            • 2020-01-05
            • 1970-01-01
            相关资源
            最近更新 更多