public abstract class BaseHolidayPackageVariant {
private Integer variantId;
private HolidayPackage holidayPackage;
private String holidayPackageType;
}
public class LandHolidayPackageVariant extends BaseHolidayPackageVariant{
}
public class FlightHolidayPackageVariant extends BaseHolidayPackageVariant{
private Destination originCity;
}
public class HolidayPackage{
ArrayList<BaseHolidayPackageVariant> variants;
BaseHolidayPackageVariant defaultVariant;
}
在运行时,我怎么能知道,如果在多个变[]给定对象为LandPackageVariant
类型或FlightPackageVariant
没有做各种各样的东西:
if(holidayPackageType.equals("LandHolidayPackageVariant")
obj = (LandHolidayPackageVariant)variant[i];
else if(holidayPackageType.equals("FlightHolidayPackageVariant")
obj = (FlightHolidayPackageVariant)variant[i];
这个问题源于从设计的问题,我问here
同意关于特定类型。否则我不知道如何建模。例如如果您查看“FlightHolidayPackageVariant”,它会添加一个成员:“OriginCity”。在给定的'HolidayPackageVariant'变体[]中,当我渲染一个'FlightHolidayPackageVariant'时,我想呈现'OriginCity'的名字。我无法从'BaseHolidayPackageVariant'中检索到这个文件。 – brainydexter 2012-03-22 14:04:49
增加了一个可能解决这个问题的例子。 – 2012-03-22 14:50:08
感谢您的编辑,我明白了您的观点。我的脑袋里有一个相关的问题,我似乎无法回答。遵循以不同方式呈现变体的同一个示例,我还想将(视图)aka渲染细节保留在我的对象模型之外。我如何使用您提供的解决方案来支持? – brainydexter 2012-03-22 18:59:37