java - 对象转换模式

标签 java object dictionary design-patterns

我有几个不同的类来自外部源(不可修改),它们代表相同的概念。例如 地址。我有 com.namespace1.Address(包含字段 houseNumstreetcity)、com。 namespace2.Address(包含字段 hsc)、namespace3.com.CoolAddress (包含字段 house_numstreetcity)。

问题是我使用的某些 Web 服务需要某些 Address 对象类型,因此我需要创建一个 com.namespace1.Address 给定一个 namespace3.com.CoolAddress .这些字段很容易映射,但我正在寻找有关如何进行映射的模式。

在我看来,实例对象 AddressConverter 没有意义,因为没有状态(只有行为),当类只有行为时,它归结为实用程序类中的静态方法.从长远来看,无论何时我需要将新对象相互映射,我都有一个地方可以添加/修改/删除方法。它的完成方式可能会改变,但我知道代码位于何处(在一次位置)并且可以在需要时更改映射。

想法?

最佳答案

我认为您正在寻找的是工厂类。当您需要能够实例化几个相关类之一时,将使用工厂模式,由工厂而非开发人员决定。

参见 http://en.wikipedia.org/wiki/Factory_method_pattern

您尝试将所有这些业务逻辑放在一个地方而不是执行 ClassOne.toClassTwo()、ClassOne.toClassThree()、...是正确的

我能想到的最灵活的实现方式(但目前还不是最简单的)是让工厂从一个简单的类开始,其中只有基本的常用方法,然后将处理程序添加到哈希表或其他容器中。这样您就不需要具体实现所有可能的功能组合。

当然,为每个可能的地址变体提供一个具体的实现会更快,但是会有相当多的重复代码,并且添加新的地址类类型会有点困难。

关于java - 对象转换模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1236667/

相关文章:

java - 使用值删除 Swing 中的复选框

java - 使用 byte[] 抑制 Android Unread Field 警告

Python:如何添加对象的静态类数组?

Python:从列表中删除作为字典中的值的元素?

java - JSP : How to get the URL Address of the page that redirects to another page in java?

java - 美国 : friday the thirteen what's wrong with my logic?

javascript - 使用 jQuery.grep() 引用 JSON 对象进行过滤

javascript - 如何在 javascript 中深度克隆 JSON 对象

javascript - 普通 JS 中的数组到 obj

python - 给定 3 个不同大小的字典,我如何找到交集和值?