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

} 

Мы имеем выполнение двигатель, который является шагом на основе и каждый шаг имеет соответствующий аннотированный метод или список методов, который обеспечивает требуемые входы для двигателя для выполнения этого конкретного шага. Иногда вместо шага у нас есть последовательность, которая в основном представляет собой список шагов с идентификатором для сложных входов. Шаги будут отсортированы на основе идентификатора и выполнены этим движком.

Используя отражения, я создаю индекс методов, которые необходимо вызвать для последовательности шагов или определенной последовательности во время выполнения. Я просматриваю классы, получаю аннотированные методы, а затем создаю индекс и вызываю их на основе тестовых входов.

В настоящее время я использую Map<String , Method> для хранения шагов и Map<String , List<Method>> для сохранения последовательности.

Мне было интересно, если есть хорошая структура данных для хранения вышеупомянутых данных. Какая структура данных была бы хороша для хранения/повторения и получения шагов/последовательностей для одного и того же?

+0

DS для структур данных. отредактировал вопрос. – Shari

ответ

3

Вы должны создать определенные классы бобов, чтобы улучшить свой дизайн.

Например вам нужно некоторые, как Workflow класса, как это показано ниже:

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

И тогда ActionStep класс следующим образом:

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

Конечно, вы должны добавить все правильные методы, которые вам нужны, как getter и setter, и даже конструкторы в классах.

Итак, вы закончите с коллекцией Workflow s, или вы все еще можете иметь карту, если вам нужен индекс для быстрого доступа.

Преимущество этой структуры данных состоит в том, чтобы разоблачить смысл каждой ассоциации. имени и Метод является шагом некоторым процесс, и поэтому имени и список ActionStep является рабочим процессом.

Увеличение ремонтопригодности кода.

Я думаю, имена классов, но вы могли бы использовать лучшее имя, соответствующее вашей цели.

 Смежные вопросы

  • Нет связанных вопросов^_^