gpt4 book ai didi

java - 处理从游标中提取公共(public)字段和特定于类型的字段的模式?

转载 作者:行者123 更新时间:2023-12-01 05:27:12 32 4
gpt4 key购买 nike

我有一个游标,其中每一行代表同一层次结构中对象的属性。这些对象不属于同一类。每行都用于实例化单个层次结构中的子类。光标包括一个“类型”列,它确定要实例化的具体子类。每个子类都需要来自光标的一组公共(public)列以及特定子类特有的一组列的值。某些列适用于某些行而不适用于其他行 - 想象一下大连接表上的光标。

我想避免解析代码中的重复,同时保持代码整洁。到目前为止,我已经尝试过几种方法,但似乎都不理想:

  1. 有一个工厂方法,可以提取所有公共(public)列,检查类型,然后使用它来提取其他列并实例化该类。优点:没有重复缺点:一种丑陋的大方法

  2. 为仅使用类型列选择的每种类型提供一个工厂方法。优点:代码非常接近,易于维护缺点:每次都重复提取共享列的代码

  3. 有一个方法可以从共享列中提取值,然后将它们传递给每种类型的其他工厂方法。优点:没有重复,相当接近缺点:具有大量参数的大型方法

  4. 包含带有 Cursor 的对象的构造函数。子类提取它们需要的内容,然后将光标传递给 super 以获得常见的内容。优点:非常接近 缺点:破坏封装。因游标问题而给构造函数带来风险

这感觉像是一个经常出现的问题,我真的很想听到比上面概述的解决方案更好的解决方案。或者这只是解析代码正在解析代码,因此很丑陋?

最佳答案

也许是这样:

使用类中的 setter 应从中获取数据的列来注释它们。

有一个接受光标的方法;让它根据类型列的值实例化一个对象。检查结果对象上的注释以确定为每列调用哪些 setter 。

要在运行时跳过此反射,您可以使用一个工具,该工具在构建时生成一个从游标设置列值的方法。 Something like this ,尽管您可能必须根据您的特定需求进行调整。

关于java - 处理从游标中提取公共(public)字段和特定于类型的字段的模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9542064/

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