gpt4 book ai didi

java - 如何定义一个好的存储库接口(interface)

转载 作者:搜寻专家 更新时间:2023-11-01 03:33:35 25 4
gpt4 key购买 nike

我有以下情况:

我正在收集有关主机的数据。每个主机都有属性和状态的集合。主人们聚在一起。

每个组都有一个唯一的ID,每个主机都有一个唯一的ID

并且所有组都聚集在一个“存储库”中。

我目前正在使用以下数据结构:

public class Host {
private final Map<PropertyId, Property> properties;
private final Map<StatusId, Status> statuses;
}

public class Group {
private final Map<HostId, Host> hosts;
}

public class AllGroups {
private final Map<GroupId, Group> groups;
}

目前这是作为内存数据结构中的常规实现的但我需要将所有这些保存在数据库中。我想定义一个好的抽象,它允许我:

  • 阅读每一项
  • 创建更新和删除属性和状态
  • 添加和删除主机
  • 删除组

我读了一些关于存储库模式的帖子,它似乎很合适,但我不知道如何正确定义接口(interface)

我应该有 1 个存储库接口(interface)吗?或者我应该为 HostRepository、PropertyRepository StatusReporitory 提供单独的接口(interface)......

最佳答案

您可以有单独的存储库接口(interface),但这里有一种只使用一个的方法。

这些类可以很容易地映射到表(或 NoSQL 数据库中的文档)。

public class Property {
private String name;
private Object value;
}

public class Host {
private long id;
private List<Property> properties;
private List<Property> statuses;
}

public class HostGroup {
private long id;
private List<Host> hosts;
}

public interface HostRepository {

List<HostGroup> getAllGroups();
HostGroup getGroupById(long id);
HostGroup saveGroup(HostGroup HostGroup);
boolean deleteGroup(HostGroup HostGroup);

Host getHostById(long id);
Host saveHost(Host host);
boolean deleteHost(Host host);

Property getProperty(long hostId, String propertyName);
void saveProperty(long hostId, Property property);
...

}

关于java - 如何定义一个好的存储库接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39647684/

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