【发布时间】:2019-06-20 10:24:10
【问题描述】:
我想为一个库构建一个 REST API(端点是客户和发票)。其中一项功能是添加发票(带有客户 ID 的 PUT 请求)。首先,我必须检查传递的客户 ID(通过 URL 中的 PUT)是否存在,这意味着检查 customerMap 并查看正在讨论的 ID。问题是customerMap 是clientService 类中的HashMap(而不是invoiceService 类)(使用Map 而不是数据库)。如何访问存储在地图中的数据?特此相关部分代码:
客户
public class client {
private static final AtomicLong counter = new AtomicLong();
private final long id;
public client() {
this.id = counter.getAndIncrement();
}
public long getId() {
return id;
}
}
客户服务
public class clientService {
public Map<Long, client> clientMap = new HashMap<>();
public client put(client g) {
clientMap.put(g.getId(), g);
return g;
}
public Collection<client> getAll() {
return clientMap.values();
}
}
发票
invoice {
private static final AtomicLong counter = new AtomicLong();
private final long id;
private client client;
public invoice() {
this.id = counter.getAndIncrement();
}
public long getId() {
return id;
}
}
发票服务
public class invoiceService {
private Map<Long, invoice> invoiceMap = new HashMap<>();
public Rechnung createinvoice(invoice g, long id) {
if(<!--client exists-->)
invoicegMap.put(g.getId(), g);
return g;
}}
【问题讨论】:
-
链接这两个类可能会导致糟糕的设计。在创建新发票时,为什么不查询
clientService以检查客户端是否存在?clientService负责获取有关客户的信息,而不是invoiceService的责任,因此在invoiceService类中实施此类检查并不可取。 -
请始终以大写字符开头类名