向现有对象添加属性

时间:2018-05-14 06:43:30

标签: java oop object design-patterns state

我有一个现有的REST应用程序,它将POJO(E.g Trade对象)缓存到ehcache,许多其他应用程序正在使用它。有些人正在将Trade对象发送到REST服务,以便它可以持久保存到Cache和DB,有些人正在使用REST服务对此缓存进行get操作。

public class Trade implements Serializable {
    private static final long serialVersionUID = -92565215465632589L;
    private String tradeNo = new String();
    private String isin = new String();
    private String quantity = new String();

.... //getters and setters 
}

现在我想在我们的应用程序中添加一个组件,它使用了许多上述交易属性,而且我想添加许多新组件作为功能的一部分。我不想为现有的Trade POJO添加新属性,因为它也会影响现有代码。我应该创建新的POJO,它将扩展Trade并添加新属性并将这个新的POJO持久化到缓存中吗?我会在缓存中使用这种方法几乎有类似的对象:-(。还有其他任何好的方法或设计模式吗?

public class ExtendedTrade extends Trade {
    private String operation = new String();
    private String dealType = new String();
    private String identifier = new String();

.... //getters and setters 
}

以上是我在方法中描述的ExtendedTrade

另外请建议任何设计,以便我可以避免缓存这种类似的对象。

1 个答案:

答案 0 :(得分:0)

嵌入(可能带有委托模式)在某些情况下似乎更加稳固。

public class ExtendedTrade {
    private Trade trade;
    private String operation = "";
    private String dealType = "";
    private String identifier = "";

.... //getters and setters 
}

考虑:

  • 现有交易是否可以扩展到ExtendedTrade(摘要)。
  • 是否存在ExtendedTrade2,其他属性。
  • 是否需要修补Trade的现有属性。

我当然不会坚持认为这更好。