我当时在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

10-07 20:55