【发布时间】:2020-07-01 15:43:03
【问题描述】:
我已经实现了一个工厂,如下所示:
class MessageFactory {
private static final Map<Integer, MessageBuilder> IdToMessage = new HashMap<Integer, MessageBuilder>() {{
put(StatusMessage.ID, StatusMessage::new);
put(ConfigurationMessage.ID, ConfigurationMessage::new);
}};
public createMessage(byte[] payload){
int id = getId(payload);
return typeToMessage.get(id).create(payload);
}
}
该工厂接收消息的有效负载(字节),从消息头中获取消息的 ID,然后使用相应消息的构造函数,其引用存储在 HashMap 中。
我想实施一个测试以确保所有消息都在 HashMap 中定义。 所有消息都放在同一个 java 包中,编写一个测试来确保这个 java 包中的所有 java 类都在 Hashmap 中是否有意义? 您是否看到任何其他方法来确保添加新消息后也将其添加到此哈希图中?这是我正在开发的代码中的一个问题,因为这种模式在多个地方使用。
【问题讨论】:
-
尝试使用反射构建地图。
-
看看:stackoverflow.com/a/34199097/5698534 这不是一个答案,而是一个不同的观点