android model 作用,android model层架构

Favor composition over inheritance.

#示例图

96f6c58f87ef

图画的有点丑,见谅。简单说一下,Presenter就是Mvp中的P,View即MVP中的V需要什么功能都由Presenter提供,事实上Presenter也是借助Usecase来完成相应功能的,Presenter持有完成所有功能的Usecase(注:每一个Usecase完成一个功能,比如登录就是LoginUsecase,注册就是RegisterUsecase)。

为什么一个Usecase只完成一个功能?

1,单一职责原则。这个不多说。

2,我倾向于使用组合去完成功能的复用,而不是继承。就像积木,需要哪个材料就选取哪个材料,精简、高效。因为最小功能单位的复用性才算最大的。

事实上,不管View层需要什么功能,直接调用presenter.execute(BaseRequest request)方法即可。当然request是具体的请求对象,继承BaseRequest。也就是说一个request对应Usecase。我们可以在Presenter中维护一个UsecaseManager实现通过request得到对应的Usecase。

Usecase是一个抽象类,上代码

```

public abstract class Usecase{

privateSubscriptionmSubscription= Subscriptions.empty();

public void execute(Q request,Observer subscriber){

unsubscribe();

mSubscription= buildUsecaseObservable(request)

.subscribeOn(Schedulers.io())

.observeOn(AndroidSchedulers.mainThread())

.subscribe(subscriber);

}

protected abstractObservable buildUsecaseObservable(Q request);

public voidunsubscribe(){

if(!mSubscription.isUnsubscribed()){

mSubscription.unsubscribe();

}

}

}

```

所以实现一个Usecase的步骤是继承Usecase,覆写buildUsecaseObservable方法,通常Usecase需要一个Repository来完成相应的操作,就在构造函数中通过Dagger2注入进来。若是明确只需要通过网络发起请求,可以直接注入一个Api,然后再Api中完成相应操作。

本片可能写的很没有逻辑,但是中心思想是使用组合而非继承,希望对你有所启发。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值