android MVP框架
尝试使用MVVM开发模式,让程序解耦。
MVVM开发模式图:
优势
- 模型与视图完全分离,我们可以修改视图而不影响模型;
- 可以更高效地使用模型,因为所有的交互都发生在一个地方——Presenter内部;
- 我们可以将一个Presenter用于多个视图,而不需要改变Presenter的逻辑。这个特性非常的有用,因为视图的变化总是比模型的变化频繁;
- 如果我们把逻辑放在Presenter中,那么我们就可以脱离用户接口来测试这些逻辑(单元测试)。
MVVM包含三个部分
- Model--表示你的业务逻辑
- View--显示的内容
- ViewModel--把View和Model联系起来
简易的MVP模式:
包含以下个关键类,针对接口编程
- IEntity
- IEntityBiz
- IMvpView
- IPresenter
- BasePresenter
- EntityPresenter
//model层,不与View交互
public interface IEntity {
public void setValue(Object obj);
public Object getValue();
}
//逻辑层,主要处理model逻辑
public interface IEntityBiz{
public void common(IEntity item);
}
//Mvp框架View都需要继承这个接口
public interface IMvpView{
public String getTextViewValue();
}
//管理者接口
public interface IPresenter<V extends IMvpView>{
public void attachView(V view);
public void detachView();
}
//管理者基类
public class BasePresenter<V extends MvpView> implements Presenter<V> {
private WeakReference<V> viewRef;
@Override public void attachView(V view) {
viewRef = new WeakReference<V>(view);
}
@Nullable
public V getView() {
return viewRef == null ? null : viewRef.get();
}
public boolean isViewAttached() {
return viewRef != null && viewRef.get() != null;
}
@Override public void detachView(boolean retainInstance) {
if (viewRef != null) {
viewRef.clear();
viewRef = null;
}
}
}
//管理者类
public class EntityPresenter extends BasePresenter<IMvpView>{
private IMvpView v;
private IEntityBiz biz;
private IEntity data;
//处理逻辑
public void doSomeThing(){
//TODO
}
}
(http://blog.csdn.net/lmj623565791/article/details/46596109)