仿电商App:笔记(二):框架柱配置入口的设计与实现

本文档详细介绍了仿电商App的项目架构初始化,包括配置项的存储与获取、对外包装类的设计,以及项目入口的配置。同时,阐述了字体图标库的集成与封装,包括引入字体库和创建自定义图标库的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1、项目架构初始化

1.1 配置项的存储与获取

1.2 配置项的对外包装类

1.3 项目入口,进行配置

2、字体图标库集成与封装

2.1 引入字体图标库

2.2 通过对Icon库封装,创建自己的图标库

1、项目架构初始化

1.1 配置项的存储与获取

位于latte-core模块下的Configurator类,使用静态内部类方法保证单例模式
public static Configurator getInstance() {
    return Holder.INSTANCE;
}

private static class Holder {
    private static final Configurator INSTANCE = new Configurator();
}

1、使用建造者模式设计配置项类,对配置项进行管理,通过链式调用方便使用

public final Configurator withIcon(IconFontDescriptor descriptor) {//链式调用with..()方法
    ICONS.add(descriptor);
    return this;
}

public final Configurator withInterceptor(Interceptor interceptor) {
    INTERCEPTORS.add(interceptor);
    LATTE_CONFIGS.put(ConfigKeys.INTERCEPTOR, INTERCEPTORS);
    return this;
}
......

2、内部使用HashMap保存所有配置信息,key使用枚举类(单例),在多线程时保证安全

private static final HashMap<Object, Object> LATTE_CONFIGS = new HashMap<>();//存储信息

final <T> T getConfiguration(Object key) {//获取配置信息
    checkConfiguration();//检查是否配置完毕
    final Object value = LATTE_CONFIGS.get(key);
    if (value == null) {
        throw new NullPointerException(key.toString() + "IS NULL");
    }
    return (T) LATTE_CONFIGS.get(key);
}

1.2 配置项的对外包装类

位于latte-core模块下的Latte类,使用final修饰,是Configurator类的包装类,对外提供,内部调用Configurator类

public static Configurator init(Context context) {//初始化配置项,入口
    Configurator.getInstance()
            .getLatteConfigs()
            .put(ConfigKeys.APPLICATION_CONTEXT, context.getApplicationContext());
    return Configurator.getInstance();
}

public static Configurator getConfigurator() {//获取Configurator类的对象
    return Configurator.getInstance();
}

public static <T> T getConfiguration(Object key){//获取配置信息
    return getConfigurator().getConfiguration(key);
}

1.3 项目入口,进行配置

位于example模块下的ExampleApp类,继承Application类

1、在Manifest中进行配置:android:name

<application
**      android:name=".ExampleApp"

2、Application的onCreate()方法会在应用创建时被执行,适合进行全局初始化配置文件。

public void onCreate() {
    super.onCreate();
    Latte.init(this)//使用包装类进行调用
            .withApiHost("")
            .withIcon(new FontAwesomeModule())
            .withIcon(new FontEcModule())
            .withInterceptor(new DebugInterceptor("test", R.raw.test))
            .configure();//配置结束

2、字体图标库集成与封装

2.1 引入字体图标库

build.gradle(Module:latte-core)引入icon库,同步项目

api 'com.joanzapata.iconify:android-iconify-fontawesome:2.2.2'

api 'com.joanzapata.iconify:android-iconify-ionicons:2.2.2'

2.2 通过对Icon库封装,创建自己的图标库

位于latte-ec模块下的FontEcModule类,继承IconFontDescriptor类,对字体图标库进行了封装

public Icon[] characters() {
    return EcIcons.values();
}

位于latte-ec模块下的EcIcons类,继承Icon类,对字体图标进行了更换、封装

icon_scan('\ue606'),//EcIcons.values()
icon_ali_pay('\ue606'),
icon_star('\ue66e'),
icon_selected_star('\ue805');

在Configurator类的初始化配置完成的configure()中进行初始化调用。加入到字体图标库中。

在入口处通过链式调用配置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值