【发布时间】:2016-01-23 18:30:11
【问题描述】:
我正在尝试理解 MvP 设计模式的概念。我的意思是,我明白了,这很容易。主要问题是优化实现。我尝试制作自己的 BaseActivity、BasePresenter 和 BaseView,只是为了从我的所有活动中提取关节的一部分,我是这样做的:
基础活动
public abstract class BaseActivity<T extends BasePresenter<? extends IBaseView>> extends FragmentActivity implements IBaseView {
protected T presenter;
private ActivityConfig activityConfig;
@Override
final protected void onCreate(Bundle savedInstanceState) {
activityConfig = getConfig();
super.onCreate(savedInstanceState);
presenter = createPresenter();
setContentView();
initLibraries();
prepareView(savedInstanceState);
addFragments();
}
protected abstract ActivityConfig getConfig();
protected abstract T createPresenter();
protected abstract void prepareView(Bundle savedInstanceState);
protected abstract void addFragments();
private void setContentView(){
View root = View.inflate(this, activityConfig.layoutId, null);
setContentView(root);
}
private void initLibraries() {
ButterKnife.bind(this);
Timber.plant(new Timber.DebugTree());
}
@Override
public BaseActivity getCurrentContext() {
return this;
}
@Override
public T getPresenter() {
return presenter;
}
}
BasePresenter
public abstract class BasePresenter<T extends IBaseView> {
public abstract void loadData(boolean refresh);
}
基础视图
public interface IBaseView {
BaseActivity getCurrentContext();
BasePresenter getPresenter();
}
它工作正常,但我觉得这个设计不好,所以我想改用 Mosby。问题是所有教程都没有涉及基类的方面,他们只是使用 Mosby 的作为基础(我想这很糟糕?因为我必须复制我的代码(例如 Butterknife.bind())。所以可以你们给我一些设计良好的 Mosby MVP 快速入门课程,或者给我一些如何划分项目的提示?谢谢!
【问题讨论】:
-
android 上的MVP有很多不同的方法,每一种都有pros和cons,很难说哪一种是对的或更好,你必须为自己找到最适合你的。