From 481cf127d4d571c331ba0ee185e8053e662605fa Mon Sep 17 00:00:00 2001 From: sige Date: Sat, 6 Jul 2024 17:34:16 +0800 Subject: [PATCH] 2 --- src/main/java/com/iflytop/uf/UfEventBus.java | 52 ++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 src/main/java/com/iflytop/uf/UfEventBus.java diff --git a/src/main/java/com/iflytop/uf/UfEventBus.java b/src/main/java/com/iflytop/uf/UfEventBus.java new file mode 100644 index 0000000..b70aab7 --- /dev/null +++ b/src/main/java/com/iflytop/uf/UfEventBus.java @@ -0,0 +1,52 @@ +package com.iflytop.uf; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +public class UfEventBus { + // 事件回调 + public interface EventCallback { + void callback( Object ... args ); + } + + // singleton instance + private static final UfEventBus instance = new UfEventBus(); + // 事件处理回调 + private final Map> callbacks; + + // get instance + public static UfEventBus getInstance() { + return UfEventBus.instance; + } + + // con + private UfEventBus() { + this.callbacks = new HashMap>(); + } + + // on + public void on( String name, EventCallback callback ) { + if ( !this.callbacks.containsKey(name) ) { + this.callbacks.put(name, new ArrayList()); + } + this.callbacks.get(name).add(callback); + } + + // off + public void off( String name, EventCallback callback ) { + if ( !this.callbacks.containsKey(name) ) { + return ; + } + this.callbacks.get(name).remove(callback); + } + + // emit + public void emit( String name, Object ... args ) { + if ( !this.callbacks.containsKey(name) ) { + return ; + } + for ( EventCallback callback : this.callbacks.get(name) ) { + callback.callback( args ); + } + } +}