我正在尝试使用Java / Kotlin(实际上是任何OOP语言)对情况建模。我必须制作一个任务管理应用。
Task
类和一个Tag
类Task
可以有多个Tag
,而一个Tag
可以有多个Task
与之关联Task
可以具有多个子任务。每个子任务本身就是一个Task
数据库架构非常简单,但我在选择应用程序代码中的最佳选项时遇到了麻烦。
我有3个选项。如果您更喜欢GitHub要点,请参见this链接。它突出显示了代码。
data class Tag (val id: Long, val name: String, val icon: Int)
data class Task(val id: Long, val name: String, val tags: List<Tag>, val subTasks: List<Task>)
data class Tag (val id: Long, val name: String, val icon: Int)
data class Task(val id: Long, val name: String, val tags: List<Tag>, val subTasks: List<Long>)
data class Tag (val id: Long, val name: String, val icon: Int)
data class Task(val id: Long, val name: String, val tags: List<Tag>)
getSubTasksForTask(task)
Task
类本身并没有告诉我们有关子任务概念的存在问题1 :由于对象之间的关系而出现此问题。我认为这种情况确实很普遍,必须有一个很好的方法来应对。请让我知道首选哪个选项,以及如何最大限度地减少它的缺点。
问题2 :在所有选项中,我都使Task
持有其标签,但没有使Tag
持有其Task
。虽然这对我来说可能很直观(不一定正确),但是处理这种关系的最佳方法是什么?
编辑:我在Android上。因此,延迟加载对我来说是不可能的:(