Просмотр исходного кода

feat(utils): 添加 FactoryUtils 工具类

hechunping 2 месяцев назад
Родитель
Сommit
7bae0163f7
1 измененных файлов с 49 добавлено и 0 удалено
  1. 49 0
      src/main/java/com/xynet/marketing/utils/FactoryUtils.java

+ 49 - 0
src/main/java/com/xynet/marketing/utils/FactoryUtils.java

@@ -0,0 +1,49 @@
+package com.xynet.marketing.utils;
+
+import com.xynet.marketing.service.factory.plus.impl.base.PlusFactoryBase;
+import com.xynet.marketing.service.factory.plus.impl.v2.PlusFactoryV2;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+public class FactoryUtils {
+
+    /**
+     * 获取服务
+     *
+     * @param classT 接口
+     * @param value  匹配值
+     * @param <T>    服务class
+     * @return 服务
+     */
+    public static <T> T getService(Class<T> classT, String value) {
+        EnumMenuClientType enumMenuClientType = EnumMenuClientType.getEnum(value);
+        if (enumMenuClientType == null) {
+            return null;
+        }
+        return (T) SpringBeanUtils.getBean(enumMenuClientType.getClassInfo());
+    }
+
+    @Getter
+    @AllArgsConstructor
+    public enum EnumMenuClientType {
+
+        PLUS_BASE("plus_base", PlusFactoryBase.class),
+        PLUS_V2("plus_v2", PlusFactoryV2.class),
+
+        ;
+
+        private final String value;
+
+        private final Class<?> classInfo;
+
+        public static EnumMenuClientType getEnum(String value) {
+            EnumMenuClientType[] values = EnumMenuClientType.values();
+            for (EnumMenuClientType enums : values) {
+                if (enums.value.equals(value)) {
+                    return enums;
+                }
+            }
+            return null;
+        }
+    }
+}