如何为书店存储库的 query/criteria 搜索建模

How to model a query/criteria search for a bookstore repository

我有一本书 repository/bookstore,客户可以在其中根据作者、ISBN、姓名等搜索图书。随着将来添加更多字段,这可能会导致存储库中出现大量查找方法。为了解决这个问题,我想要一个 find 方法,它接受一个 Query 对象来封装搜索。我还想用 QueryBuilder class 构造查询。但是,我在实施这些 classes 时遇到了问题。有什么建议么??另外,分页支持应该是存储库或构建查询的客户端的关注点。

我的 BookRepository class 目前看起来像这样:

public interface Bookstore {
    Iterable<Book> find(Query query);

    Iterable<Book> find(Query query, int start, int len);

    void add(Book book);

    void remove(Query query);
}

您可以使用 Query Object 模式。它应该支持构建器。