一、设计全局配置器
依照“单例模式”下的“懒汉式”,通过枚举类和静态内部类来实现,保证线程安全,也避免使用双重校验锁。
1. public class Configurator
该类用于配置文件的存储和获取,包括各种配置项(如,后端主机地址)、字体图标库的引用、用于线程通信的全局Handler。
import android.os.Handler;
import com.blankj.utilcode.util.Utils;
import com.joanzapata.iconify.IconFontDescriptor;
import com.joanzapata.iconify.Iconify;
import java.util.ArrayList;
import java.util.HashMap;
public class Configurator {
private static final HashMap<Object,Object> QILU_CONFIGS= new HashMap<>();
private static final Handler HANDLER = new Handler();
private static final ArrayList<IconFontDescriptor> ICONS = new ArrayList<>();
// 不让其他类创建本类的对象
private Configurator(){
QILU_CONFIGS.put(ConfigKeys.CONFIG_READY, false);
QILU_CONFIGS.put(ConfigKeys.HANDLER, HANDLER);
}
//利用静态内部类进行初始化
private static class Holder {
private static final Configurator INSTANCE = new Configurator();
}
static Configurator getInstance() {
return Holder.INSTANCE;
}
final HashMap<Object, Object> getQiluConfigs() {
return QILU_CONFIGS;
}
public final void configure() {
initIcons();
QILU_CONFIGS.put(ConfigKeys.CONFIG_READY, true);
Utils.init(Qilu.getApplicationContext());
}
private void initIcons() {
if (ICONS.size() >