自我提升之一 从架构的角度看接口,万能接口的实现原理

本文探讨Android开发中组件间通信的万能接口实现,通过数据源和方法栈中转,减少耦合。介绍了方法封装、管理类构建以及具体实践案例,展示了一种简单优雅的通讯方式。
摘要由CSDN通过智能技术生成

目的

在Android开发阶段,组件之间的通信是不可避免的,组件之间的通信方式也会有很多,它们各有优劣,今天我们主要了解的是,一种万能接口的方式来实现,一个简单而优雅的通讯方式,用少量的代码,来完成组件间的通信解耦。

常用的组件间的通讯方式

常用的组件间的通讯方式
其中最常用就前三种,其中:

  1. Intent 只能界面逐级传输
  2. Handler 存在内存泄漏, 在activity被销毁时,由于队列还有消息,Handler还存在,造成存在泄漏。
  3. interface 书写反锁,耦合性强,并且不能切换线程

当然也有一些常用的三方的框架,如EventBus,XBus等等,但是一个优秀的第三方框架百分之八十的功能我们都不会使用,所以当这些都没有的时候,我们如何更加优雅的实现大量组件间的通信了?

“数据源” – 思路

“数据源” -- 思路

核心思想

  1. 通过数据源或方法栈中转,组件只管接受或发送
  2. 将方法进行封装
  3. 将方法提取出来进行管理

具体实践

1.方法的封装

四种类型:
方法封装的四种类型
方法封装的父类

package com.fly.newstart.neinterface;

/**
 * <pre>
 *           .----.
 *        _.'__    `.
 *    .--(Q)(OK)---/$\
 *  .' @          /$$$\
 *  :         ,   $$$$$
 *   `-..__.-' _.-\$/
 *         `;_:    `"'
 *       .'"""""`.
 *      /,  FLY  ,\
 *     //         \\
 *     `-._______.-'
 *     ___`. | .'___
 *    (______|______)
 * </pre>
 * 包    名 : com.fly.newstart.neinterface
 * 作    者 : FLY
 * 创建时间 : 2019/4/23
 * 描述: 方法封装管理的父类
 */
public class Function {

    //方法名称
    public String functionName;

    public Function(String functionName) {
        this.functionName = functionName;
    }
}

无参数无返回值类型方法

package com.fly.newstart.neinterface;

/**
 * <pre>
 *           .----.
 *        _.'__    `.
 *    .--(Q)(OK)---/$\
 *  .' @          /$$$\
 *  :         ,   $$$$$
 *   `-..__.-' _.-\$/
 *         `;_:    `"'
 *       .'"""""`.
 *      /,  FLY  ,\
 *     //         \\
 *     `-._______.-'
 *     ___`. | .'___
 *    (______|______)
 * </pre>
 * 包    名 : com.fly.newstart.neinterface
 * 作    者 : FLY
 * 创建时间 : 2019/4/23
 * 描述: 无参数 无返回 类型 方法
 */
public abstract class FunctionNoParamNoResult extends Function{

    public FunctionNoParamNoResult(String functionName) {
        super(functionName);
    }

     public abstract void function();
}

无参数有返回值类型方法

package com.fly.newstart.neinterface;

/**
 * <pre>
 *           .----.
 *        _.'__    `.
 *    .--(Q)(OK)---/$\
 *  .' @          /$$$\
 *  :         ,   $$$$$
 *   `-..__.-' _.-\$/
 *         `;_:    `"'
 *       .'"""""`.
 *      /,  FLY  ,\
 *     //         \\
 *     `-._______.-'
 *     ___`. | .'___
 *    (______|______)
 * </pre>
 * 包    名 : com.fly.newstart.neinterface
 * 作    者 : FLY
 * 创建时间 : 2019/4/23
 * 描述: 无参数 有返回值 类型 方法
 */
public abstract class FunctionNoParamHasResult<T> extends Function{

    public FunctionNoParamHasResult(String functionName) {
        super(functionName);
    }

     public abstract T function();
}

有参数无返回值类型方法

package com.fly.newstart.neinterface;

/**
 * <pre>
 *           .----.
 *        _.'__    `.
 *    .--(Q)(OK)---/$\
 *  .' @          /$$$\
 *  :         ,   $$$$$
 *   `-..__.-' _.-\$/
 *         `;_:    `"'
 *       .'"""""`.
 *      /,  FLY  ,\
 *     //         \\
 *     `-._______.-'
 *     ___`. | .'___
 *    (______|______)
 * </
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值