我试图提出一种简单的方法来组织一些对象,这些对象要创建什么类。假设我正在尝试跟踪书籍。一本书可以分为多种不同的流派和子流派。我希望能够将一本书识别为一本书,并将其归入这些不同的类别。我有一个流派类,可以跟踪所有子流派,还有一个子流派类,其中包含所有书籍。我想让这本书知道它所属于的所有流派和子流派。我还希望根据体裁和子体裁跟踪一些统计信息(评论,评论,阅读次数等),然后能够将其汇总以获取整本书的数字。这样,用户可以选择一本书并知道该书所属的每个流派/子流派,并为每个类别整理有关该书的统计信息
关于如何设计此功能有什么想法?
我的想法是让每本书定义一个名为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构造函数采用Set of Book对象让我有些不安,但目前我还无法想到另一种方法来执行此操作。