为什么BaseFragmentActivityHoneycomb是抽象的?

时间:2017-01-05 19:34:12

标签: java android oop design-patterns

为什么android.support.v4.app.BaseFragmentActivityHoneycomb在没有任何抽象方法的情况下被宣布为抽象的?我知道他们不希望任何人实例化BaseFragmentActivityHoneycomb,但为什么他们只是在onCreate()内写BaseFragmentActivityHoneycomb FragmentActivity方法的内容?

这只是历史性的还是偶然的,还是有良好的设计意图?

1 个答案:

答案 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兼容性相关的特定功能在其自己的隔离类中,则可以更容易理解维护程序员。