Наша команда работает над рефакторингом, в котором один из членов моей команды рефакторинг компонента "XFormComponent" с использованием MVP
, поэтому XFormComponent теперь имеет
- XFormFragment реализует XFormComponent.View
- XFormPresentor реализует XFormComponent.Presentor
- XFormModel
Теперь мне нужно создать еще один MVP - «AllFormsComponent», этот компонент отображает все компоненты форм, включая «XFormComponent»,«YFormComponent» и т. Д. Как список фрагментов.
Поэтому у меня будет
- AllFormsComponentFragment, реализующий AllFormsComponent.View
- AllFormsComponentPresentor, реализующий AllFormsComponent.Presentor * 1020AllFormsComponentModel
Теперь мой вопрос: кто "AllFormsComponentFragment" или "AllFormsComponentPresentor" будет нести ответственность за создание подкомпонентов subMVP, т.е. XFormFragment?
Мои мысли
// The V of MVP
public class AllFormsComponentFragment implements AllFormsComponent.Views extends Fragment {
@Inject AllFormsComponent.Presentor myPresentor = inject();
private AllFormComponentModel mAllFormComponentModel;
public static AllFormsComponentFragment newFragmennt(AllFormComponentModel allFormComponentModel) {
// make fragment with model
}
List<FormModel> models = myPresentor.getListofFormModels(mAllFormComponentModel);
for(FormModel model : models ) {
// create the FormCompoent (Views) Fragments, and give to fragment manager.These individual component will create their own presentor
}
}
// The P of MVP
class AllFormsComponentPresentor implements AllFormsComponent.Presentor {
@Override
public List<FormModel> getListofFormModels(AllFormComponentModel model) {
// return the list of models
}
}
public interface AllFormsComponent {
interface View {
// view related methods
}
interface Presentor {
// gets the list of models for the component MVP's
List<FormModel> getListofFormModels(AllFormComponentModel model);
}
}
Мои вопросы
- Этот подход звучит обоснованно.Я новичок в использовании MVP, поэтому отзывы и предложения приветствуются.
-Я все еще немного сбит с толку из-за общения.Например: если модель AllFormComponentModel изменяется, все фрагменты компонентов должны получать обновления - как это сообщение должно быть создано.PubSub Archi?или AllFormComponentFragment просто отправляет обновления в нисходящем направлении.Как насчет обработки вращения.дочерние фрагменты будут созданы перед родительским фрагментом при повороте, как эти дескрипторы в коммуникации MVP.
- Эти вложенные фрагменты заставляют меня думать, делать фрагменты компонента - должны быть фрагментом или мы можемизбегать изящно?