为什么android.support.v4.app.BaseFragmentActivityHoneycomb
在没有任何抽象方法的情况下被宣布为抽象的?我知道他们不希望任何人实例化BaseFragmentActivityHoneycomb
,但为什么他们只是在onCreate()
内写BaseFragmentActivityHoneycomb
FragmentActivity
方法的内容?
这只是历史性的还是偶然的,还是有良好的设计意图?
答案 0 :(得分:1)
为什么不在FragmentActivity中编写方法onCreate of BaseFragmentActivityHoneycomb?
我只能推测他们正在减少FragmentActivity
尝试遵循SOLID programming中单一责任原则的问题。
让我们看一下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兼容性相关的特定功能在其自己的隔离类中,则可以更容易理解维护程序员。