我正在尝试编写一个框架来处理与外部库及其 API 的接口。作为其中的一部分,我需要在许多 (70ish) 可能的消息类中的每一个中填充一个具有相同名称和类型的标头字段。不幸的是,不是让每个消息类都派生自一个包含标头字段的公共基类,而是每个消息类都是完全独立的。
作为玩具示例:
public class A
{
public Header header;
public Integer aData;
}
public class B
{
public Header header;
public Long bData;
}
如果他们在 A 和 B 派生自包含标头的某个基类的地方合理地设计了它们,我可以这样做:
public boolean sendMessage(BaseType b)
{
b.header = populateHeader();
stuffNecessaryToSendMessage();
}
但就目前而言,Object 是唯一的通用类。我想到的各种选择是:
- 每种类型都有一个单独的方法。这会奏效,而且速度很快,但代码重复会令人沮丧地浪费。
- 我可以对每种类型进行子类化,并让它们实现一个通用接口。虽然这可行,但创建 70 多个子类然后修改代码以使用它们而不是原始消息传递类是一个太过分的桥梁。
- 反射。可行,但我希望它太慢(这里的性能是一个问题)
鉴于这些,每种方法的单独方法似乎是我最好的选择,但我希望有更好的选择。