java - java中带有规范模式的存储库模式

标签 java repository-pattern specification-pattern

我正在尝试实现存储库模式来查询用户以及与每个用户关联的相应设置。我有一个存储库接口(interface),其中包含每个存储库要实现的增删改查操作。

import java.util.List;

public interface Repository<T> {

    void add(T item);
    void add(Iterable<T> items);
    void update(T item);
    void remove(T item);
    void remove(Specification specification);
    List<T> query(Specification specification);

}

我正在阅读规范模式,但我不明白如何将这个概念应用到我的用例中。

我有两个实现 Repository 接口(interface)的存储库。我的类将具有以下操作,这些操作将转换为界面中提到的增删改查操作

GetSettingsForUserIDMatchingSettingName(string userid, string settingname);
CreateSettingForProfile(string userid, Setting setting);
Create(string userid, Setting setting);
Update(string userid, Setting setting); 
GetAllProfiles();
GetProfilesMatchingUserID(string userid);
GetSettingsForUserID(string userid);        
GetProfilesForUserIDWithSettingName(string userid, string settingname);

如何创建我的规范类或接口(interface),以便我的规范满足所有用例。

我引用了下面的 github 链接来实现,但我迷路了。

https://github.com/patrikfr/specification/blob/master/specification/src/com/granular8/specification/genericspec/Specification.java

请帮忙。

最佳答案

如果您正在查询或需要它来过滤要从某个存储库中删除的对象,那么规范模式会有所帮助,这很好。该模式在 C# 中有一个很好的实现。希望您将其翻译为 Java,因为它已经支持 lambda 表达式。 https://github.com/jnicolau/NSpecifications

关于java - java中带有规范模式的存储库模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47093833/

相关文章:

c# - 是 EF 实体或域对象的规范模式

java - Javascript 注入(inject)中的变量 [webview]

java - 如何将包含 parcelable 类 'A' 实例的 Parcelable 类 'B' 的实例写入 'B' 类的 Parcel

java - Log4j 不在消息前打印名称

c# - 我将如何设计一个存储库来处理多个数据访问策略?

git 忽略特定目录

asp.net-mvc-3 - 带有存储过程的 DDD 规范模式

java - 添加 AOP 建议时 Spring Boot 应用程序上下文被破坏

c# - 更新记录 Nhibernate 和 Iqueryable

c# - 如何存储每个 session 未登录用户的数据?