我正在研究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();
}
这是最终的活动:
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中的showLoader()和HideLoader()方法对于每个扩展BaseView的接口都是常见的。这就是为什么我将它们保留在BaseView中的原因。到目前为止还没有问题。
问题是:我必须在每个实现BaseView或其子接口的类中实现和提供这些方法的定义。
例如:在这里
TestActivity extends BaseActivity implements TestView
为了避免这个问题,我在BaseActivity中实现了BaseView,并提供了这些方法的定义。但是如果我在BaseActivity中实现了BaseView,我可以看到BaseView是从BaseActivity传递给TestActivity的。
而且TestView已经实现了BaseView,这是我的要求,TestView必须扩展BaseView。如果我不在BaseActivity中实现BaseView,则需要在每个Activity类中实现showLoader()和hideLoader()方法。目前在BaseView中有2个方法,它们可以更多......
请建议任何解决方案。
TestView
扩展BaseView
--BaseActivity
实现BaseView
--TestActivity
扩展BaseActivity
并实现TestView
- CeH9