我要对一个方法添加多个监听、请写一个案例
时间: 2023-08-11 12:05:06 浏览: 78
oracle一个监听多个实例
好的,下面是一个简单的案例,展示如何对一个方法添加多个监听器:
```java
@Component
public class MyService {
private List<MyListener> listeners = new ArrayList<>();
public void addListener(MyListener listener) {
listeners.add(listener);
}
public void removeListener(MyListener listener) {
listeners.remove(listener);
}
public void doSomething() {
// 在方法执行前,依次调用所有监听器的before方法
for (MyListener listener : listeners) {
listener.before();
}
// 方法的具体实现
System.out.println("doing something...");
// 在方法执行后,依次调用所有监听器的after方法
for (MyListener listener : listeners) {
listener.after();
}
}
}
public interface MyListener {
void before();
void after();
}
@Component
public class MyFirstListener implements MyListener {
@Override
public void before() {
System.out.println("MyFirstListener before...");
}
@Override
public void after() {
System.out.println("MyFirstListener after...");
}
}
@Component
public class MySecondListener implements MyListener {
@Override
public void before() {
System.out.println("MySecondListener before...");
}
@Override
public void after() {
System.out.println("MySecondListener after...");
}
}
public class Application {
public static void main(String[] args) {
ApplicationContext context = new AnnotationConfigApplicationContext(Config.class);
MyService service = context.getBean(MyService.class);
// 向MyService中添加两个监听器
MyListener firstListener = context.getBean(MyFirstListener.class);
MyListener secondListener = context.getBean(MySecondListener.class);
service.addListener(firstListener);
service.addListener(secondListener);
// 调用MyService的方法
service.doSomething();
// 从MyService中移除一个监听器
service.removeListener(firstListener);
// 再次调用MyService的方法
service.doSomething();
}
@Configuration
@ComponentScan
public static class Config {
}
}
```
在这个案例中,我们定义了一个MyService类,其中包含一个doSomething方法,这个方法会在执行前后依次调用所有的监听器的before和after方法。同时,我们还定义了一个MyListener接口,以及两个实现了这个接口的监听器MyFirstListener和MySecondListener。在Application类中,我们向MyService中添加了这两个监听器,并调用了doSomething方法。在第二次调用doSomething方法时,我们从MyService中移除了一个监听器,以便演示如何动态地添加和移除监听器。
阅读全文