我正在开发一个Android应用程序,它需要几个步骤注册过程。因为我需要收集的数据量很大,所以我为每一步创建了一个活动和一个不同的片段。例如,在第一步/片段中,用户必须提供基本信息(姓名,性别,电子邮件),第二步/片段教育信息(大学,学位,参加日期)和最终步骤/片段体验信息(公司) ,标题,日期)。一旦用户正确完成所有步骤,我就会将单个JSON请求中的所有信息发送到我的Web服务。
我的问题是:什么样的设计或设计模式能够以优雅,可读和可测试的方式更好地模拟这个问题?我目前使用的方法,我认为它根本不好,可能会在应用程序中创建内存泄漏是这样的:
class Registration {
// Contains basic user information such as name, gender, etc
private User user;
// Each Education instance contains info such as university, degree, etc
private List<Education> studies;
// Each Experience instance contains info such as company name, title, etc
private List<Experience> workExperience;
private static Registration currentRegistration;
public static Registration getCurrent() {
if (currentRegistration == null) {
currentRegistration = new Registration();
}
return currentRegistration;
}
/* There are getter and setter methods for each field */
}
正如您所看到的,我创建了包含必需字段的Registration类和一个静态引用实例,该实例表示通过getCurrent方法提供给每个片段的当前注册,该片段从其onCreate方法调用它并设置该步骤的信息想到了相应的setter方法。当用户输入所有数据后,我将此POJO转换为JSON并发出网络请求。
另一种方法可能是将Registration实例从片段A传递给B,我需要实现可序列化的接口,但我不喜欢这种方法。
我想到了Builder和JavaBean模式,但是当我必须在单个块语句中初始化对象时,我发现它们更合适。有关如何正确建模此问题的任何建议? :)
答案 0 :(得分:0)
你太复杂了。
我以前做过这种类型的实现,就注册实现而言,它实际上相当普遍。我不确定那里是否有更好的选择,我已经看到了很多不同的选项,但是与简单相比,它们在简单方面都失败了: