【问题标题】:Java Multiple annotations on methods : Good DataStructure to storeJava方法上的多个注释:存储的好DataStructure
【发布时间】:2016-09-27 19:31:59
【问题描述】:

我有许多方法的类,其中一些用注释标记。每个方法都可以有很多注解,比如

@StepAnnotation(name="Action1" ) 
@SequenceAnnotation(name="transactionA" sequenceID="5")
public void doSomeStuff() {

//Perform some stuffs here, calling API or performing some DB actions

}

我们有一个基于步骤的执行引擎,每个步骤都有一个相应的带注释的方法或方法列表,它们为引擎提供执行该特定步骤所需的输入。有时,我们有一个序列,而不是一个步骤,它基本上是一个步骤列表,带有一个用于复杂输入的 id。这些步骤将根据 id 进行排序并由该引擎执行。

使用反射,我构建了一个方法索引,这些方法需要在运行时为一系列步骤或特定序列调用。我扫描类,获取带注释的方法,然后构建索引并根据测试输入调用它们。

目前,我使用Map<String , Method> 存储步骤,使用Map<String , List<Method>> 存储序列。

我想知道,是否有任何好的数据结构来存储上述数据。什么数据结构对存储/迭代和检索相同的步骤/序列都有好处?

【问题讨论】:

  • 数据结构的 DS。编辑了问题。

标签: java data-structures object-oriented-analysis


【解决方案1】:

您应该创建特定的 bean 类来改进您的设计。

例如,您需要一些类似 Workflow 的类,如下所示:

class Workflow {
    public String name;
    public List<ActionStep> steps;
    // methods....
}

然后是一个像这样的 ActionStep 类:

class ActionStep {
    public String name;
    public Method method;
    // methods ....
}

当然,您应该在类中添加所需的所有适当方法,例如 getter 和 setter,甚至是构造函数。

所以你完成了一个工作流的集合,或者如果你需要一个快速访问的索引,你仍然可以有一个地图。

这种数据结构的优点是暴露了每个关联的含义。 nameMethod 是某个工作流的一个步骤,因此 nameActionStep 列表是一个工作流程。

增加代码的可维护性。

我猜是类的名称,但您可以使用更适合您的目的的名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-06
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多