代码之家  ›  专栏  ›  技术社区  ›  Jack BeNimble

实现多种类型的观察者模式的最佳方法是什么?[关闭]

  •  1
  • Jack BeNimble  · 技术社区  · 16 年前

    我有一名特工负责监控某些情况。对于每种情况,我想通知不同的观察者,因为这种情况的责任在于观察者。

    1 回复  |  直到 16 年前
        1
  •  3
  •   TofuBeer    16 年前

    如果你将此与Java如何处理GUI组件上的事件(虽然不完全相同,但总体思路相同)进行比较,你会得到这样的结果:

    public void addActionListener(ActionListener listener) { }
    public void addWindowListener(WindowListener listener) { }
    public void addComponentListener(ComponentListener listener) {}
    public void addMouseListener(MouseListner listener) {}
    

    所有*Listener的东西都是接口。然后,您提供一个或多个实现接口的类(我更喜欢每种监听器类型一个类,其他人更喜欢创建一个实现所有监听器的单个类)。

    这被证明是非常灵活的,因为事物只能注册它们感兴趣的事件。

    另一种方法是使用单个“addListener(侦听器侦听器)”方法,其中侦听器接口中包含所有可能的事件,这将是一个坏主意,除非您接受有关他们不关心的事件的通知。

    听起来你想要细粒度的控制,所以我可以用Java事件方式为每种一般类型的事件提供接口。

    推荐文章