在Java中向下倾斜?这是一个堕落的问题吗?

时间:2016-06-18 16:53:09

标签: java downcast

所以我有一个POJO类,我们称之为:InnerDomainObject。 然后我有一个对象代表这个对象,还有一些字段,用于与不同客户端的通信(它是一个API DTO):OuterDomainObject

因为DTO实际上有所有POJO字段,所以我使OuterDomainObject继承自InnerDomainObject。

现在我需要以某种方式将InnerDomainObject强制转换为OuterDomainObject - >不可能。

我想避免编写迭代遍历所有字段的构造函数。 我想避免编写无用的代码。

我只是希望从InnerDomainOBject的值中创建OuterDomainObject,然后在将其发送到客户端之前添加一些。

这样做的最佳方式是什么?

1 个答案:

答案 0 :(得分:0)

您听起来像是在使用Adapter Pattern。您不应该将InnerDomainObject强制转换为OuterDomainObject。你应该使用组合:OuterDomainObject应该保存对InnerDomainObject的引用,这可能会被传递给构造函数。当客户端在OuterDomainObject上调用方法时,如果该方法存在于InnerDomainObject中,则OuterDomainObject应在其InnerDomainObject实例上调用该方法。不要将InnerDomainObject foo强制转换为OuterDomainObject,只需创建一个新的OuterDomainObject并传入foonew OuterDomainObject(foo)。您需要编写一些简单的胶水代码,但结果非常干净。