gpt4 book ai didi

java - 如何以 OO 方式实现一个简单的场景

转载 作者:行者123 更新时间:2023-12-02 06:22:46 26 4
gpt4 key购买 nike

在开始阅读一本关于 OO 编程的书之后,我试图让我的 Android 应用程序更加面向对象。然而,我被一个简单的场景难住了。

我有一个 Book 对象,它可以有许多 Chapter 对象。我还有一个搜索功能,可以搜索多本书,共 97 本书。我最终从 Sqlite 表中得到了许多 Chapter 对象。

我觉得用户能够在每个结果上看到书名会很有用,否则如果有两个“第 5 章”结果可能会造成困惑。

为此,我需要书名。我应该将其作为我的章节对象的一部分,例如:

chapter.getBookTitle()

哪种似乎不对,因为我已将书名粘贴到章节上...另一种方法是为每个章节实例化一个书本对象并以某种方式引用它,这有其自身的问题,包括在 android 方面无法将对内存中对象的引用传递给另一个 Activity 。

此外,一本书可能还有许多其他章节,这些章节在搜索中没有结果,如果我只是实例化这本书,它们似乎会返回。

对于这个看似简单的问题,正确的面向对象解决方案是什么?这只是学习何时不要对整个面向对象事物教条的问题吗?

更多信息:

我在 Sqlite 中使用 FTS4,它占我实际数据库大小 80mb 的一半以上。我存储的是 97 本书的文本,其中有 4 种语言的章节。所以我的 FTS 目前存储:

ChapterId, ChapterNo (withinBook), Lang1, Lang2, Lang3, Lang4, Tags, Notes

搜索速度非常快,只检索到 50 个结果。我将任何列与字符串术语匹配,而不是特定的一列。因此,如果我输入“apple”,它将搜索上面的所有字段。

目前,作为 FTS 查询的一部分,我加入了 Book 的联接,获取 BookId,稍后我用它来获取书的标题。然而,这一切都是类似程序的风格,而不考虑信息“属于”哪里。

我需要标题,以便可以在结果中显示它,只是为了方便用户。

它工作得很好,但是我想要类似的性能或稍微低一些,但采用面向对象的方法,因为我认为当我在长时间的停顿后回到这个项目时,这对我来说更有意义。

最佳答案

Chapter 对象应该引用它来自的书,所以我建议类似的东西chapter.getBook().getTitle();

您的数据库表结构应该有一个书籍表和一个章节表,其中包含以下列:

书籍

  • ID
  • 预订具体信息
  • 等等

章节

  • ID
  • book_id
  • 章节特定信息
  • 等等

然后,为了减少查询数量,请在搜索查询中使用联接表。

关于java - 如何以 OO 方式实现一个简单的场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20864268/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com