清洁架构问题
我有许多表单activities
,其中包含 1 个必须在提交期间附加的公共数据,我的问题是,逻辑必须放在哪里?
域还是表示层?
演示文稿:
我将创建一个BaseFormActivity
具有将所需数据插入到其form
子级的方法的方法,该子级BaseForm
包含全局所需的数据。
BaseForm:(被所有形式扩展)
public class BaseForm {
private String globalData;
//getter setters...
}
BaseFormPresenter:
public class BaseFormPresenter extends BaseFormMvpView {
private final GetGlobalDataInteractor mGetData; //to be injected, this is a use case
public void getGlobalData() {
mGetData.execute()
.subscribe(data -> {
getMvpView().showGlobalData(data);
}); //just for the sake of simplicity
}
}
BaseFormActivity:(由处理表单的所有活动扩展)
public abstract class BaseFormActivity implements BaseFormMvpView {
@Inject
BaseFormPresenter mPresenter;
//onCreate(), etc
}
SpecificFormActivity:(扩展 BaseFormActivity)
public class SpecificFormActivity extends BaseFormActivity {
private SpecificForm mForm; //extends BaseForm
//onCreate(), etc
@Override
public void showGlobalData(String data) {
mForm.setGlobalData(data);
}
//then ill just call the presenter to get the global data before submitting
}
对于域:
SubmitSpecificFormInteractor:(对不起编码,这只是我想做什么的表示)
public class SubmitSpecificFormInteractor extends SingleUseCase<Return, Param> {
//to be injected
GlobalRepository mGlobalRepository;
SpecificFormRepository mFormRepository;
//some initialization
public Single<SomeResponse> buildObservable(@NonNull String specificFormData, String anotherSpecificFormData) {
return mGlobalRepository.getGlobalData()
.map(globalData -> SpecificFormDto.create(
specificFormData, anotherSpecificFormData, globalData)) //create the dto then append global data
.flatMap(specificFormDto -> mFormRepository.submit(specificFormDto)) //then submit data
}
}
我正在考虑将它放在域层上(您可以看到它非常孤立,但我必须在所有表单提交上都这样做,这是冗余),但我仍然只想让我的决定更加可靠。重构是耗时的。希望您在这里理解我的观点,特别是关于我的类似伪代码的编码。如果有难以理解的内容,请随时发表评论。谢谢你。