为什么当android.support.v4.app.BaseFragmentActivityHoneycomb
实际上没有任何抽象方法时,它被声明为抽象的?我了解他们不希望任何人实例化BaseFragmentActivityHoneycomb
,但是为什么他们不只是在onCreate()
内编写BaseFragmentActivityHoneycomb
方法的FragmentActivity
内容呢?
这是历史的还是偶然的,还是有好的设计意图?
最佳答案
他们为什么不只在FragmentActivity内编写BaseFragmentActivityHoneycomb的onCreate方法的内容?
我只能推测,尝试遵循SOLID programming中的单一责任原则,可以减少FragmentActivity
的关注数量。
让我们看一下BaseFragmentActivityHoneycomb
的代码:
@Override
public View onCreateView(View parent, String name, Context context, AttributeSet attrs) {
final View v = dispatchFragmentsOnCreateView(parent, name, context, attrs);
if (v == null && Build.VERSION.SDK_INT >= 11) {
// If we're running on HC or above, let the super have a go
return super.onCreateView(parent, name, context, attrs);
}
return v;
}
将它作为子类的
onCreate
内的一个块包含起来似乎微不足道,但是onCreate()
的FragmentActivity
方法已经有37行长。如果与Honeycomb兼容性相关的特定功能在其自己的隔离类中,则对于维护程序员而言,它更易于理解。