如何定义一个好的存储库接口

时间:2016-09-22 19:46:24

标签: java design-patterns

我有以下情况:

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

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

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

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

DispatchQueue.main.async {
            let layer = self.signUpBtn.layer
            layer.borderColor = UIColor.white.cgColor
            layer.borderWidth = 2 / UIScreen.main.scale
        }

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

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

我阅读了一些关于存储库模式的帖子,看起来很合适,但我无法弄清楚如何正确定义接口

我应该有1个存储库界面吗? 或者我应该为HostRepository,PropertyRepository StatusReporitory ...

分别设置接口

1 个答案:

答案 0 :(得分:1)

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

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

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);
  ...

}