我正在编写基于多层MVP的应用程序。 所有图层的常用方法都转到BASE图层。 然后,每个子类的具体方法转到MIDDLE和TOP层。
从代码示例中,您可以看到我将我的视图传递给演示者作为create方法的参数。
我的问题是我应该如何将演示者传递给家长观点。 我可以这样做,如BASE图层演示者在创建视图时将其自身附加到视图中的示例中所示吗? 或者顶层图片片段(创建演示者)是否应将演示者附加到父片段。
或许还有另一种方法来处理这种情况。
BASE LAYER
public interface BaseView extends BaseProgressDialogInterface{
void setPresenter(BasePresenter presenter);
}
public class BaseFragment extends Fragment implements BaseView{
private BasePresenter presenter;
@Override
public void setPresenter(BasePresenter presenter) {
this.presenter = presenter;
}
public void randomEvent(){
if (presenter != null)
presenter.doSomething();
}
}
public class BasePresenter {
private final BaseView view;
public BasePresenter(BaseView view) {
this.view = view;
view.setPresenter(this);
}
public void doSomething(){
//Do something..
}
}
MIDDLE LAYER
public interface BaseMainScreenView extends BaseView{
void startSomeActivity();
}
public class BaseMainScreenFragment extends BaseFragment implements BaseMainScreenView {
//Can be called from multiple top classes
public void startSomeActivity (){
//Starting other activity, do not need a presenter in this class
}
}
public class BaseMainScreenPresenter extends BasePresenter {
private final BaseMainScreenView view;
public BaseMainScreenPresenter(BaseMainScreenView view) {
super(view);
this.view = view;
}
//Other logic...
}
TOP LAYER
public interface TopFragmentView extends BaseMainScreenView {
//...
}
public class TopFragment extends BaseMainScreenFragment implements TopFragmentView {
private TopFragmentPresenter presenter;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
presenter = new TopFragmentPresenter(this);
}
public void topEvent(){
presenter.topAction();
}
}
public class TopFragmentPresenter extends BaseMainScreenPresenter {
private final TopFragment view;
public TopFragmentPresenter(TopFragment view) {
super(view);
this.view = view;
}
public void topAction(){
view.startSomeActivity();
}
}