2017-01-05 4 views
0

Почему android.support.v4.app.BaseFragmentActivityHoneycomb был объявлен абстрактным, если у него нет абстрактных методов? Я понимаю, что они не хотят, чтобы кто-либо создавал экземпляр BaseFragmentActivityHoneycomb, но почему бы им просто не написать содержание метода onCreate() из BaseFragmentActivityHoneycomb внутри FragmentActivity?Почему BaseFragmentActivityHoneycomb аннотация?

Это просто исторический или случайно, или у него есть хорошие намерения дизайна?

+1

Задание «Почему разработчик X принял решение Y?» on Stack Overflow редко бывает полезным. Единственной стороной, которая может окончательно ответить на вопрос, является разработчик X, и маловероятно, что разработчик X увидит этот вопрос. Любой может только предлагать догадки. «Почему вы объявляете класс« абстрактным », если у него нет« абстрактных »методов?» действительно, и вы могли бы привести этот случай в качестве примера. – CommonsWare

+0

Это не обязательно так. Есть несколько вариантов дизайна, которые просто разумны, и более опытный разработчик может посмотреть на них и сказать «хорошо, это очевидно». (Или, может быть, разработчик ** написал о своем решении.) Если это не относится к этому конкретному вопросу, вы должны объяснить, почему. – giusti

ответ

1

Почему они просто не пишут содержание метода onCreate of BaseFragmentActivityHoneycomb внутри FragmentActivity?

Я могу только предположить, что они уменьшают количество проблем 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, находятся в собственном изолированном классе.

Смежные вопросы