android MVP框架

尝试使用MVVM开发模式,让程序解耦。


MVVM开发模式图:


优势

  1. 模型与视图完全分离,我们可以修改视图而不影响模型;
  2. 可以更高效地使用模型,因为所有的交互都发生在一个地方——Presenter内部;
  3. 我们可以将一个Presenter用于多个视图,而不需要改变Presenter的逻辑。这个特性非常的有用,因为视图的变化总是比模型的变化频繁;
  4. 如果我们把逻辑放在Presenter中,那么我们就可以脱离用户接口来测试这些逻辑(单元测试)。

MVVM包含三个部分

  1. Model--表示你的业务逻辑
  2. View--显示的内容
  3. ViewModel--把View和Model联系起来

简易的MVP模式:
包含以下个关键类,针对接口编程
  1. IEntity
  2. IEntityBiz
  3. IMvpView
  4. IPresenter
  5. BasePresenter
  6. 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)

posted @ 2015-11-19 12:15  嘴嘴2015  阅读(165)  评论(0编辑  收藏  举报