java - 我应该在 API 包中使用数据类的接口(interface)吗?

标签 java api-design software-design

我正在设计一个 API,以便将来通过测试来覆盖它。

我的服务方法需要一些数据类:

public interface Service {
   GetUserResponse getUser(GetUserQuery query);
}

GetUserResponseGetUserQuery 只是携带数据的结构。

我应该将它们创建为带有 setter、getter 等的接口(interface)或 POJO 吗?

另外,如果是后者,它们应该放在哪里?在 API 模块中还是在一个带有实现的模块中?

最佳答案

这是意见,但我不同意你的选择。

  1. “服务” - 太笼统,不一定与数据有关。对我来说,这些通常意味着 SOAP,或者更好的是 REST。
  2. 查询对象?我认为这是一个更好的合约来阐明用户应该传递什么。不用担心灵 active ;更喜欢清晰。
  3. 我希望 getUser 的返回值是一个 User。

这就是我要做的:

public interface UserRepository {  
    List<User> find();
    User find(Integer id);
    List<User> find(String lastName);
    Integer save(User user);
    void update(User user);
    void delete(Integer id);
}

关于java - 我应该在 API 包中使用数据类的接口(interface)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58147937/

相关文章:

java - 如何获取struts2拦截器中struts.action.extension的值?

java - 正确安装 java 8 和 java 7

Java 列表作为第一项应始终具有特定值

rest - 设计 REST API : sub-collection and HTTP PATCH

java - 验证 REST API 中的查询参数

Java 设计替代 if-else with instanceof

java - Maven 编译和运行时错误 java.lang.AbstractMethodError : oracle. jdbc.driver.T4CConnection.isValid(I)Z on Tomcat 8 Server

rest - HATEOAS 与 PUT/POST 链接

python-3.x - 使用 Apache Beam Python 为每个窗口编写唯一的 Parquet 文件

c# - 如何将发布为 Web 应用程序的模板与使用此包装器的 Web 应用程序集成?