2016-09-27 27 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爲