From 8e30e63043f35b9bf00d47f7684572ae37b29dc8 Mon Sep 17 00:00:00 2001 From: Stars <785981017@qq.com> Date: Tue, 12 May 2020 14:54:52 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=88=9D=E5=A7=8B=E5=8C=96?= =?UTF-8?q?=E6=96=B9=E5=BC=8F=EF=BC=8C=E6=94=AF=E6=8C=81=E7=8E=AF=E5=A2=83?= =?UTF-8?q?=E5=88=87=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/star/api/APIManager.java | 66 +++++++++++++------ .../java/com/star/api/adapter/CallBack.java | 2 +- .../com/star/api/environment/Environment.java | 8 +++ .../api/{ => resolver}/ServiceResolver.java | 2 +- .../java/com/star/api/service/Service.java | 36 ++++++++++ .../com/star/api/service/ServiceProvider.java | 13 ++++ 6 files changed, 106 insertions(+), 21 deletions(-) create mode 100644 api/src/main/java/com/star/api/environment/Environment.java rename api/src/main/java/com/star/api/{ => resolver}/ServiceResolver.java (92%) create mode 100644 api/src/main/java/com/star/api/service/Service.java create mode 100644 api/src/main/java/com/star/api/service/ServiceProvider.java diff --git a/api/src/main/java/com/star/api/APIManager.java b/api/src/main/java/com/star/api/APIManager.java index 2053c32..2ad32ce 100644 --- a/api/src/main/java/com/star/api/APIManager.java +++ b/api/src/main/java/com/star/api/APIManager.java @@ -5,7 +5,11 @@ import com.star.api.adapter.DefaultListener; import com.star.api.adapter.Listener; import com.star.api.adapter.callback.Fail; +import com.star.api.environment.Environment; import com.star.api.lifecycle.LifecycleManager; +import com.star.api.resolver.ServiceResolver; +import com.star.api.service.Service; +import com.star.api.service.ServiceProvider; import java.util.HashMap; import java.util.Map; @@ -19,14 +23,18 @@ */ public class APIManager { - private Map services; - private Map resolvers; + private Environment environment; + + private Map services; private Fail failDefault; private DefaultListener defaultListener; private static APIManager instance; + /** + * Application初始化 + */ public static void init(Application application) { LifecycleManager.register(application); } @@ -40,27 +48,21 @@ public static APIManager getInstance() { private APIManager() { services = new HashMap<>(); - resolvers = new HashMap<>(); - } - - public APIManager addService(Class cls, @NonNull Object service, @NonNull ServiceResolver resolver) { - services.put(cls, service); - resolvers.put(cls, resolver); - return this; - } - - @NonNull - public Object getService(Class cls) { - return services.get(cls); } - public void removeService(Class cls) { - services.remove(cls); - resolvers.remove(cls); + /** + * 设置环境 + */ + public void setEnvironment(@NonNull Environment environment, @NonNull ServiceProvider provider) { + clear(); + this.environment = environment; + for (Service service : provider.getServices(environment)) { + services.put(service.getService().getClass(), service); + } } - public ServiceResolver getResolver(Class cls) { - return resolvers.get(cls); + public Environment getEnvironment() { + return environment; } public APIManager setFailDefault(Fail response) { @@ -80,4 +82,30 @@ public Fail getFailDefault() { public Listener getListenerDefault() { return defaultListener.newInstance(); } + + public void removeService(Class cls) { + services.remove(cls); + } + + /** + * 清除所有设置 + */ + public void clear() { + services.clear(); + failDefault = null; + defaultListener = null; + } + + + //Auto Call + public final ServiceResolver getResolver(Class cls) { + return services.get(cls).getResolver(); + } + + + //Auto Call + @NonNull + public final Object getService(Class cls) { + return services.get(cls).getService(); + } } diff --git a/api/src/main/java/com/star/api/adapter/CallBack.java b/api/src/main/java/com/star/api/adapter/CallBack.java index d290ce2..21df7dd 100644 --- a/api/src/main/java/com/star/api/adapter/CallBack.java +++ b/api/src/main/java/com/star/api/adapter/CallBack.java @@ -1,7 +1,7 @@ package com.star.api.adapter; import com.star.api.APIManager; -import com.star.api.ServiceResolver; +import com.star.api.resolver.ServiceResolver; import com.star.api.adapter.callback.Cancel; import com.star.api.adapter.callback.Complete; import com.star.api.adapter.callback.Fail; diff --git a/api/src/main/java/com/star/api/environment/Environment.java b/api/src/main/java/com/star/api/environment/Environment.java new file mode 100644 index 0000000..4c094e9 --- /dev/null +++ b/api/src/main/java/com/star/api/environment/Environment.java @@ -0,0 +1,8 @@ +package com.star.api.environment; + +/** + * 说明:环境 + * 时间:2020/5/12 14:40 + */ +public interface Environment { +} diff --git a/api/src/main/java/com/star/api/ServiceResolver.java b/api/src/main/java/com/star/api/resolver/ServiceResolver.java similarity index 92% rename from api/src/main/java/com/star/api/ServiceResolver.java rename to api/src/main/java/com/star/api/resolver/ServiceResolver.java index 6576db7..ec6b844 100644 --- a/api/src/main/java/com/star/api/ServiceResolver.java +++ b/api/src/main/java/com/star/api/resolver/ServiceResolver.java @@ -1,4 +1,4 @@ -package com.star.api; +package com.star.api.resolver; import com.star.api.adapter.CallBack; diff --git a/api/src/main/java/com/star/api/service/Service.java b/api/src/main/java/com/star/api/service/Service.java new file mode 100644 index 0000000..8778eaa --- /dev/null +++ b/api/src/main/java/com/star/api/service/Service.java @@ -0,0 +1,36 @@ +package com.star.api.service; + +import androidx.annotation.NonNull; + +import com.star.api.resolver.ServiceResolver; + +/** + * 说明: + * 时间:2020/5/12 14:46 + */ +public class Service { + + private Object service; + private ServiceResolver resolver; + + public Service(@NonNull Object service, @NonNull ServiceResolver resolver) { + this.service = service; + this.resolver = resolver; + } + + public Object getService() { + return service; + } + + public void setService(@NonNull Object service) { + this.service = service; + } + + public ServiceResolver getResolver() { + return resolver; + } + + public void setResolver(@NonNull ServiceResolver resolver) { + this.resolver = resolver; + } +} diff --git a/api/src/main/java/com/star/api/service/ServiceProvider.java b/api/src/main/java/com/star/api/service/ServiceProvider.java new file mode 100644 index 0000000..5506e1a --- /dev/null +++ b/api/src/main/java/com/star/api/service/ServiceProvider.java @@ -0,0 +1,13 @@ +package com.star.api.service; + +import com.star.api.environment.Environment; + +/** + * 说明: + * 时间:2020/5/12 14:46 + */ +public interface ServiceProvider { + + Service[] getServices(Environment environment); + +}