我有以下类层次结构:BaseActivity
:
public abstract class BaseActivity extends AppCompatActivity {
protected abstract void bindView();
}
ASubActivity
:public class ASubActivity extends BaseActivity {
@Override
protected void bindView() {
//No implementation
}
}
BSubActivity
:public class BSubActivity extends BaseActivity {
private Toolbar toolbar;
@Override
protected void bindView() {
toolbar = (Toolbar) findViewById(R.id.toolbar);
}
...
}
我觉得这有点难看。我宁愿在
bindView()
中没有ASubActivity
方法。是否有最佳做法来做到这一点?注意:
BaseActity
确实包含其他两个子类都使用的其他抽象方法。 最佳答案
一种方法是将bindView()
放在接口中,而不是BaseActivity
,只有BSubActivity
实现该接口:
public interface BindViewInterface{
protected void bindView();
}
这样就不需要
bindView()
BSubActivity
。另一种方法是不使
bindView()
为抽象方法:public abstract class BaseActivity extends AppCompatActivity {
protected void bindView() {}
}