gpt4 book ai didi

java - 将java域模型从域A转换为域B

转载 作者:行者123 更新时间:2023-12-01 04:29:59 24 4
gpt4 key购买 nike

我有一个域模型 A,我想将其转换为另一个域模型 B。因此,对于每个模型元素,我需要将其转换为 B 的一个或多个元素。

域 A 看起来非常简单,如下所示:

public class Model
{
public List<ModelElement> elements;
}

public class ModelElement
{
public SubElement subElement;
}

public class SubElement
{
public String someData;
}

域 B 看起来像

public class Layout
{
public List<Layer> layers;
}

public class Layer
{
public LayerData layerData;
}

public class LayerData
{
public int layerNumber;
public String name;
}

这确实很简化,我的模型有点复杂,但为了解释我认为这已经足够了。

所以我的问题是,转换器的好方法是什么。

我想编写一个类,它遍历模型并转换每个元素。最后我有一个巨大的转换器类,这不是很好。

我的另一种方法是构建一个工厂,它为域 A 的每个元素提供一个特定的转换器。然后,每个转换器可以调用工厂来获取子元素的转换器。不幸的是,我需要一些元素转换附加数据。因此,要在某些转换器中使用它,我必须将它们传递给所有上层转换器,这听起来也不太好。

什么是好的方法?

感谢您的帮助西蒙

最佳答案

如果您的数据模型是分层且有限的,我会采用第一种方法,但将其职责划分为几个类。让主类发布转换所需的数据。然后它调用根(模型/布局)的转换器类,该类转换并调用子转换器(模型元素/图层级别)等等。诀窍是始终传递对主类的引用,该类的工作方式就像转换器的信封或数据存储一样。通过这样做,您将获得一个具有单一职责的良好解耦设计:提供数据、转换单个类等等。

这只是我想要的设计草图。考虑到这些信息,这是我能画出的最好的。您可能想要对其进行调整,并可能添加一些抽象(例如,减少信封类数据发布的接口(interface))。

关于java - 将java域模型从域A转换为域B,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18074084/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com