我有几个不同的类来自外部源(不可修改),它们代表相同的概念。例如 地址
。我有 com.namespace1.Address
(包含字段 houseNum
、street
、city
)、com。 namespace2.Address
(包含字段 h
、s
、c
)、namespace3.com.CoolAddress
(包含字段 house_num
、street
、city
)。
问题是我使用的某些 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/