Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 任何人都可以和我分享一个listerner模式的例子_Java - Fatal编程技术网

Java 任何人都可以和我分享一个listerner模式的例子

Java 任何人都可以和我分享一个listerner模式的例子,java,Java,我正在学习一种叫做listerner的设计模式。任何人都可以与我分享这种模式的一个例子。我不需要任何与GUI相关的东西,比如JWT,感谢监听器模式非常接近Observer。基本上,您只允许其他对象“侦听”您的对象。因此,您需要维护这些侦听器的列表,并在需要时通知他们 大概是这样的: public class MyClass { public static interface Listener { public void onNotify(); } private

我正在学习一种叫做listerner的设计模式。任何人都可以与我分享这种模式的一个例子。我不需要任何与GUI相关的东西,比如JWT,感谢监听器模式非常接近Observer。基本上,您只允许其他对象“侦听”您的对象。因此,您需要维护这些侦听器的列表,并在需要时通知他们

大概是这样的:

public class MyClass {
   public static interface Listener {
      public void onNotify();
   }

   private List<Listener> listeners = new ArrayList<Listener>();

   // addListener and removeListener methods omitted.

   public void doSomething() {
      // do something that listeners should be notified of.

      // notify listeners like this:
      for (Listener l : listeners) {
         l.onNotify();
      }
   }
}
公共类MyClass{
公共静态接口侦听器{
公共无效通知();
}
私有列表侦听器=新的ArrayList();
//省略addListener和RemovelListener方法。
公共无效剂量测定法(){
//做一些应该通知听众的事情。
//通知侦听器如下:
for(侦听器l:侦听器){
l、 onNotify();
}
}
}

希望它有意义:)

这里有一个在Java中使用该模式的示例,因为您没有要求特定的东西

public class MyButton extends JButton implements ActionListener {
    public MyButton() {
        addActionListener(this);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        // omgwtfbbqroflolkthxbai
    }
}

侦听器模式实际上不在设计模式的四人组中。然而,侦听器模式只是查看观察者模式的另一种方式。这包含了一个用Java编写的观察者模式解决方案的好例子。

很有趣-我是一个Java noob,通过一个“外部”接口实现了这一点,并使侦听器对象实现了该接口。。。我假设一些类型转换是在addListener方法中完成的?这看起来更干净:)不,你不需要任何类型的打字。但是您需要完全限定接口的名称,即MyClass.Listener.Look,它描述了如何使用现代Java工具构建Listener(又名Observer)设计模式的实现。