我有以下类层次结构:

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() {}
}

09-03 20:27