diff --git a/hippo4j-common/src/main/java/cn/hippo4j/common/design/observer/AbstractSubjectCenter.java b/hippo4j-common/src/main/java/cn/hippo4j/common/design/observer/AbstractSubjectCenter.java index b23a0292..7c176edb 100644 --- a/hippo4j-common/src/main/java/cn/hippo4j/common/design/observer/AbstractSubjectCenter.java +++ b/hippo4j-common/src/main/java/cn/hippo4j/common/design/observer/AbstractSubjectCenter.java @@ -29,6 +29,16 @@ public class AbstractSubjectCenter { register(SubjectType.SPRING_CONTENT_REFRESHED.name(), observer); } + /** + * Register observer. + * + * @param subjectType + * @param observer + */ + public static void register(SubjectType subjectType, Observer observer) { + register(subjectType.name(), observer); + } + /** * Register observer. * @@ -75,6 +85,22 @@ public class AbstractSubjectCenter { observers.remove(observer); } + /** + * Notify. + * + * @param subjectType + * @param observerMessage + */ + public static void notify(SubjectType subjectType, ObserverMessage observerMessage) { + notify(subjectType.name(), observerMessage); + } + + /** + * Notify. + * + * @param subject + * @param observerMessage + */ public static void notify(String subject, ObserverMessage observerMessage) { List observers = OBSERVERS_MAP.get(subject); if (CollectionUtil.isEmpty(observers)) { @@ -91,12 +117,17 @@ public class AbstractSubjectCenter { }); } - private enum SubjectType { + public enum SubjectType { /** * Spring content refreshed. */ - SPRING_CONTENT_REFRESHED + SPRING_CONTENT_REFRESHED, + + /** + * Clear config cache. + */ + CLEAR_CONFIG_CACHE } diff --git a/hippo4j-common/src/main/java/cn/hippo4j/common/design/observer/Observer.java b/hippo4j-common/src/main/java/cn/hippo4j/common/design/observer/Observer.java index b24ca041..a8dbc17f 100644 --- a/hippo4j-common/src/main/java/cn/hippo4j/common/design/observer/Observer.java +++ b/hippo4j-common/src/main/java/cn/hippo4j/common/design/observer/Observer.java @@ -6,13 +6,13 @@ package cn.hippo4j.common.design.observer; * @author chen.ma * @date 2021/12/25 19:46 */ -public interface Observer { +public interface Observer { /** * Receive notification. * * @param observerMessage */ - void accept(ObserverMessage observerMessage); + void accept(ObserverMessage observerMessage); } diff --git a/hippo4j-common/src/main/java/cn/hippo4j/common/design/observer/ObserverMessage.java b/hippo4j-common/src/main/java/cn/hippo4j/common/design/observer/ObserverMessage.java index 9a5df4f4..9e9895b5 100644 --- a/hippo4j-common/src/main/java/cn/hippo4j/common/design/observer/ObserverMessage.java +++ b/hippo4j-common/src/main/java/cn/hippo4j/common/design/observer/ObserverMessage.java @@ -6,6 +6,13 @@ package cn.hippo4j.common.design.observer; * @author chen.ma * @date 2021/12/25 19:54 */ -public interface ObserverMessage { +public interface ObserverMessage { + + /** + * Message. + * + * @return + */ + T message(); }