<分区>
我有一个 TriggerType 的枚举,可以在其中添加不同的触发器
public enum TriggerType {
meta,data,list,toggle
}
这些触发器类型在不同的处理程序(例如组件、仪表板等)中使用,以通过 switch-case 识别在处理程序内部触发了哪个触发器,例如下面给出了通过 switch-case 使用触发器的 ComponentHandler 的代码片段
@Override
public TriggerResultInterface executeTriggerJob(TriggerEventHelper triggerEventHelper) throws TriggerHandlerException {
switch (triggerEventHelper.getTriggerName()) {
case meta:
return getMetaComponentConfig(triggerEventHelper);
case data:
return getComponentData(triggerEventHelper);
default:
LOGGER.debug(INVALID_TRIGGER_NAME_CONFIGURED);
throw new TriggerHandlerException(INVALID_TRIGGER_NAME_CONFIGURED);
}
}
想象一下,如果我要添加一个新的Trigger,我必须更新枚举类,这是不可避免的,同时我必须更新我的每个需要使用该Trigger的处理程序类,这是不是这样设计的编码很好,或者是否有任何其他更好的解决方案可以增强此代码并遵循 SOLID 原则以及更好的设计。
我想强调的是,这个问题不是 this 的重复问题.在这种情况下,每种类型只需要一种行为(例如:convertToMp3)。但我的问题指的是我的枚举类型(触发器类型)依赖于它可能被使用的处理程序,因此每个触发器类型枚举的行为或实现将取决于它正在使用的处理程序的要求。