package com.silencedut.knowweather;
import com.silencedut.knowweather.common.BaseModel;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/**
* Created by SilenceDut on 2016/11/14 .
*/
public class ModelManager {
private static Map<String, BaseModel> sModelMap = new ConcurrentHashMap<>();
private ModelManager() {
}
public static <T extends BaseModel> T getModel(Class<T> modelType) {
String modelName = modelType.getName();
T model;
BaseModel baseModel = sModelMap.get(modelName);
if (modelType.isInstance(baseModel)) {
model = (T) baseModel;
return model;
}
try {
model = modelType.newInstance();
model.onCreate();
sModelMap.put(modelName, model);
} catch (Exception e) {
model = null;
}
return model;
}
public static <T extends BaseModel> void unSubscribe(Class<T> modelType) {
BaseModel model = sModelMap.get(modelType.getName());
if (model != null) {
model.onDestroy();
}
sModelMap.remove(modelType.getName());
}
static void unSubscribeAll() {
for (String clsName : sModelMap.keySet()) {
BaseModel model = sModelMap.get(clsName);
if (model != null) {
model.onDestroy();
}
sModelMap.remove(clsName);
}
sModelMap.clear();
}
}