2016-09-27 28 views
0

我有许多方法的类,其中一些方法由注释标记。每个方法可以有许多的注释等Java方法上的多个注释:要存储的良好DataStructure

@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>来存储Steps,并使用Map<String , List<Method>>来存储序列。

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

+0

。编辑了这个问题。 – Shari

回答

3

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

例如,你需要一些像工作流程类,因为它是如下:

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

然后一个ActionStep类,像这样:

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

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

因此,您完成了工作流程 s的集合,或者如果您需要快速访问索引,则仍然可以拥有映射。

这个数据结构的优点是揭示每个关联的含义。 一个方法有一些工作流程的步骤,等等ActionStep的列表是一个工作流程。

增加代码的可维护性。

我想这个班的名字,但你可以使用更适合你的目的的名字。用于数据结构的DS为