Java/Android中的用户挑战关系设计
我刚刚开始应用程序开发,目前正在编写一个Android应用程序,该应用程序拥有注册用户和一个“挑战”列表,他们可以选择这些挑战,然后将其标记为完成/失败。 计划是最终将所有用户/challenge/etc数据存储在数据库中,尽管我还没有实现这一点 我遇到的问题是——在我当前的设计中,每个用户都有包含当前挑战和已完成挑战的列表变量,例如两个ArrayList字段。 用户当前从不同质询对象的列表视图中选择质询,然后将这些质询对象添加到用户的CurrentChallenges列表中 我没有说明的是如何构造它,以便当用户接受挑战时,他们有自己独特的挑战副本,可以独立标记为已完成等,而此时选择挑战1的每个用户,只需添加与选择挑战1的其他用户具有相同ID等的相同挑战 我想我可以让每个不同的挑战都是它自己的挑战子类,并为每个选择该挑战类型的用户分配一个该类的不同实例,但是这似乎是一个非常混乱/低效的方法,因为所有不同的类基本上都是相同的 有人对这个案例有什么好的想法或设计模式吗?最好是一个解决方案,该解决方案将与以后将这些挑战存储在数据库中并可能使用ORM兼容 非常感谢你的建议,Java/Android中的用户挑战关系设计,java,android,database-design,Java,Android,Database Design,我刚刚开始应用程序开发,目前正在编写一个Android应用程序,该应用程序拥有注册用户和一个“挑战”列表,他们可以选择这些挑战,然后将其标记为完成/失败。 计划是最终将所有用户/challenge/etc数据存储在数据库中,尽管我还没有实现这一点 我遇到的问题是——在我当前的设计中,每个用户都有包含当前挑战和已完成挑战的列表变量,例如两个ArrayList字段。 用户当前从不同质询对象的列表视图中选择质询,然后将这些质询对象添加到用户的CurrentChallenges列表中 我没有说明的是如何
E我会将每个用户不同的挑战的每个方面都转移到一个新的
尝试类中。因此,Challenge
可能有name
,description
等变量,trunt
可能有inProgress
,completed
等变量。显然,这些只是示例,用实际存储的数据替换它们
现在,在您的User
课程中,您可以使用Map
记录挑战。将其设置为地图
,每个用户
将能够为每个挑战
存储一次尝试
,以记录他们的进度。Challenge
实例在用户之间共享,但是对于User
和Challenge
的每个组合都有一个尝试
实例
稍后实现数据库时,挑战
、用户
和尝试
将各自转换为一个表<代码>尝试
将为其他两个表都提供外键。不幸的是,我没有太多地使用ORM,所以我不确定它们是否能正确地使用映射。这就是它当前的设置方式,所以可能我误解了它,毕竟我还可以。我认为这意味着挑战只有一个isCompleted值,而不是每个用户都有一个isCompleted值。这显然是一个潜在的解决方案,我会考虑使用地图,谢谢你的建议。