Skip to content

Commit

Permalink
优化初始化方式,支持环境切换
Browse files Browse the repository at this point in the history
  • Loading branch information
lannaican committed May 12, 2020
1 parent f8a3b1c commit 8e30e63
Show file tree
Hide file tree
Showing 6 changed files with 106 additions and 21 deletions.
66 changes: 47 additions & 19 deletions api/src/main/java/com/star/api/APIManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -19,14 +23,18 @@
*/
public class APIManager {

private Map<Class, Object> services;
private Map<Class, ServiceResolver> resolvers;
private Environment environment;

private Map<Class, Service> services;

private Fail failDefault;
private DefaultListener defaultListener;

private static APIManager instance;

/**
* Application初始化
*/
public static void init(Application application) {
LifecycleManager.register(application);
}
Expand All @@ -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) {
Expand All @@ -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();
}
}
2 changes: 1 addition & 1 deletion api/src/main/java/com/star/api/adapter/CallBack.java
Original file line number Diff line number Diff line change
@@ -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;
Expand Down
8 changes: 8 additions & 0 deletions api/src/main/java/com/star/api/environment/Environment.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.star.api.environment;

/**
* 说明:环境
* 时间:2020/5/12 14:40
*/
public interface Environment {
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.star.api;
package com.star.api.resolver;

import com.star.api.adapter.CallBack;

Expand Down
36 changes: 36 additions & 0 deletions api/src/main/java/com/star/api/service/Service.java
Original file line number Diff line number Diff line change
@@ -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;
}
}
13 changes: 13 additions & 0 deletions api/src/main/java/com/star/api/service/ServiceProvider.java
Original file line number Diff line number Diff line change
@@ -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);

}

0 comments on commit 8e30e63

Please sign in to comment.