##IProvider##
它首先是Arouter包下的一个类文件:
package com.alibaba.android.arouter.facade.template;
import android.content.Context;
/**
* Provider interface, base of other interface.
*
* @author Alex <a href="mailto:zhilong.liu@aliyun.com">Contact me.</a>
* @version 1.0
* @since 16/8/23 23:08
*/
public interface IProvider {
/**
* Do your init work in this method, it well be call when processor has been load.
*
* @param context ctx
*/
void init(Context context);
}
看上去显得很无聊的呐。啥东东都木有的呐。
##那么这个东西究竟是个啥呢?##
我理解为它是ARouter内的一个概念,是ARouter提供的一种代表项目具体业务的编码和封装的范式,和android本身技术点无关,它是ARrouter所衍生出来的一种思想,可以理解为"业务的抽象与封装"的一种编程范式,它不是必要的,但它是重要的,它为我们在配合Arouter框架下进行业务封装时提供了一种**“优雅的姿势”**。在编码过程中,我更倾向于将其命名为IxxxService。
##一个最简单的例子##
import android.app.Activity;
import com.alibaba.android.arouter.facade.template.IProvider;
import com.chad.library.adapter.base.BaseQuickAdapter;
/**
* Created by thinkpad on 2018/1/29.
* 旅游服务
*/
public interface ITravelService extends IProvider{
/**
* 选择国家
*/
void choiceCountry(Activity activity);
/**
* 选择城市
*/
void choiceCity(Activity activity, BaseQuickAdapter adapter, int position);
/**
* 执行旅游
*/
void doneTravle(Activity activity, BaseQuickAdapter adapter,int position,String action);
}
这样我们就定义好了一个**“旅游的服务”**,它内部包含3个业务,[选择国家],[选择城市],[去旅游]。
那么我们就来一次愉快的旅游吧##
比如这么个场景,选择了国家,然后列出该国家的城市,点击城市的时候,我们去旅行。
快拿我的(灰烬使者)代码过来
界面我就不写了,本文主要讨论思想。
1.定义业务抽象接口
public interface ITravelService extends IProvider{
/**
* 选择国家
*/
void choiceCountry(Activity activity);
/**
* 选择城市
*/
void choiceCity(Activity activity, BaseQuickAdapter adapter, int position)