属性的两种可能类型

时间:2011-01-14 13:42:37

标签: oop properties composite

我有一个复合模式中的叶子。此类具有可以是类型A或类型B的属性。它们唯一的通用接口是Object类型。

我应该如何支持这一点。

我可以

  1. 为每种类型都有一个add方法。但这意味着我应该有两个A和B类型的属性,并且当我想获得正确的属性时应该检查null。

  2. 有一个Object类型的属性。这意味着当我拿到房产时,我必须检查它是什么样的实例。

  3. 此类问题的最佳解决方案是什么?或者更好的解决方案?

2 个答案:

答案 0 :(得分:1)

我个人会选择单Object属性方法。记录属性可以返回的对象类型,并让调用代码使用可用的语言功能来确定对象类型,并根据需要进行转换。实现两个属性有点重塑你的语言的“is-a”运算符,如果你需要添加更多可能的类型,它将很快变得难以管理。

答案 1 :(得分:0)

如果您使用支持类型抽象的语言(如Java中的Generics或C ++中的模板),您可以将该属性设置为泛型类型。如果没有,请使用Object,为每种类型设置一个方法只是一个丑陋的黑客(如果你以后添加更多类型,则无法管理)。