我正在尝试根据要创建的类提出一种组织某些对象的简单方法。假设我正在尝试跟踪书籍。一本书可以属于许多不同的流派和子流派。我希望能够将一本书识别为一本书,但又将其归入这些不同的类别。我有一个跟踪所有子流派的流派类,还有一个包含所有书籍的子流派类。我想让这本书知道它所属的所有类型和子类型。我还想跟踪一些基于类型和子类型的统计数据(评论、评论、阅读次数等),然后能够汇总它们以获得整本书的数字。通过这种方式,用户可以选择一本书并了解该书所属的每个流派/子流派,以及关于该书的每个类别的统计信息
关于如何设计它有哪些想法?
我的想法是让每本书都定义一个名为 BookGroup 的类,BookGroup 将包含流派和子流派,以及该类别的任何相关信息(假设子流派只能属于一种流派)。然后在 Book 类中,我将保留该书所属的一组书组。我可以将所有不同书组的统计数据相加。我唯一不喜欢的是我觉得 BookGroup 应该包含 Books,而不是相反。
还有其他想法吗?
谢谢!
编辑: 你们都给了很好的建议。我想出于简单的原因,我现在可能会做这样的事情:
class Book
{
Genre myGenre;
SubGenre mySubGenre;
String myTitle;
}
class Library
{
Map<String,Set<Book>> allBooks = new HashMap<String,Set<Book>>();
//where allBooks contains a mapping from book title, to all of the book objects which actually represent the same book but may contain different information related to their specific genre/subgenre
}
最佳答案
我想你会希望你的类看起来像这样:
public class Book
{
String name;
List<Review> reviews;
Set<Genre> genres;
public Book(String name, Set<Genre> genres){}
}
public class Genre
{
String name;
Set<Book> books;
public Genre(String name, Set<Book> books){}
}
我在这里假设您将使用数据库,反过来您将有一个 DAO 来查询所有符合条件的已知书籍,然后对数据集执行 CRUD 操作。我觉得建议 Genre 构造函数采用一组 Book 对象有点不对劲,但目前我想不出另一种方法来做到这一点。
关于Java程序设计题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4147269/