Как лучше всего организовать моих слушателей?

Мы реализуем плагин для инструмента, наша цель - предоставить ускоритель для клиентов.

Например, если пользователь создает свойство объекта A, мы создадим другой объект XA. если пользователь удалит этот объект A, мы удалим наш объект XA. Если пользователь создает объект B, а его родительский тип - A, тогда мы создадим объект XB и активируем специальное поведение.

Сегодня мы используем imbricated if, чтобы определить, какая закономерность произошла.

for (PropertyChangeEvent event : events) {
if (isEventTypeOf(INSTANCE_CREATED) {
    if(object instanceOf A)
        createXA_Object(object)
    
    if(object instanceOf B){
        createXB_Object(object)
        if(object.parent instance of A)
            customXB_behavior(object)
    }
}else{
    if(isEventTypeOf(INSTANCE_DELETED) {
    ...
    }
}

}

Наша проблема в том, что сегодня у нас 20 слушателей, и со временем их число будет увеличиваться. Итак, я искал способ лучше организовать наш код. Мне нужно решение, в котором просто добавить поведение с легко читаемым кодом; какая функция будет вызываться при каком условии.

Вот список разных идей:

  • напишите логические функции isPatternA (), чтобы сделать код более читабельным
  • создать класс со списком предикатов для оценки и поведением
  • этот поток: Альтернативы встроенным операторам if?
  • Использование Enum
  • Использование стратегии
  • Использование системы правил

Надеюсь, я был чист


person Quentin Cespedes    schedule 17.12.2020    source источник