BaseFragmentActivityHoneycomb

BaseFragmentActivityHoneycomb

为什么当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兼容性相关的特定功能在其自己的隔离类中,则对于维护程序员而言,它更易于理解。

10-04 19:57