我当时在MVP上进行研发,我正考虑在下一个项目中使用这种设计模式。
但是我正面临这种设计模式的问题。
请看下面的java代码。
我有一个BaseActivity类
public class BaseActivity extends AppCompatActivity {
}
接口BaseView
public interface BaseView {
void showLoader();
void hideLoader();
}
另外一个接口扩展了BaseView接口,以维护视图之间的关系
//Game start from here
public interface TestView extends BaseView {
void showResult();
}
这是最后的 Activity :
public class MyTestActivity extends BaseActivity implements TestView {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_test);
}
@Override
public void showLoader() {
}
@Override
public void hideLoader() {
}
@Override
public void showResult() {
}
}
BaseView的2个方法showLoader()和HideLoader()对于扩展BaseView的每个接口都是通用的。
这就是为什么我将它们保留在BaseView中的原因。到现在都没问题。
问题是:我必须在实现BaseView或其子接口的每个类中实现和提供这些方法的提供程序定义。
示例:在这里
TestActivity extends BaseActivity implements TestView
因此,为防止出现此问题,我将BaseView实现为BaseActivity并提供了这些方法的定义。
但是我可以看到BaseView从BaseActivity进入TestActivity(如果我在BaseActivity中实现BaseView)
还有来自已经实现BaseView的TestView。
这是我的要求,TestView必须扩展BaseView。
如果我没有在BaseActivity中实现BaseView,则需要在每个Activity类中实现showLoader()和hideLoader()方法。现在我在BaseView中有2种方法,它们可以更多...
请提出任何解决方案。
最佳答案
只需在BaseActivity中实现默认实现即可。因此,如果需要,您可以覆盖childs中的方法。
BaseActivity implements BaseView