【发布时间】:2015-07-19 14:13:59
【问题描述】:
我正在开发一个 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 模式,但是当我必须在单个块语句中初始化对象时,我认为它们更合适。关于如何正确建模此问题的任何建议? :)
【问题讨论】:
标签: android algorithm oop design-patterns architecture