我想创建一个宏项。此宏项目可编辑。
每个宏项都有一个类型和一个eventValue。
有三种类型的项目(pressKey,releaseKey,delayInMs)
对于pressKeyEvent和releaseKeyEvent,我希望用户只能选择keyObject作为eventValue。
对于delayEvent,我希望用户只能选择一个整数作为eventValue。
现在我有了这个
export enum MacroEventEnum {
pressKey,
releaseKey,
delayInMs
}
export class MacroItem {
// This represent the type of the macro event
public macroEvent: MacroEventEnum;
// This represent the value associate with the macro event
public macroEventValue: any;
constructor(macroEvent: MacroEventEnum, macroEventValue: any) {
this.macroEvent = macroEvent;
this.macroEventValue = macroEventValue;
}
}
问题是,当用户将macroEvent的类型更改为pressKey时,它仍然可以将时间用作macroEventValue。
在这种情况下应该使用什么样的模式,因为知道用户总是可以更改macroEvent。
感谢您的建议:)
答案 0 :(得分:0)
您需要一个类层次结构:MacroItem
,KeyMacroItem
和DelayMacroItem
,其中KeyMacroItem
和DelayMacroItem
都从MacroItem
继承。
MacroItem
具有macroEvent
属性,KeyMacroItem
另外具有keyObject
属性,DelayMacroItem
还具有delayValue
属性。您可以在MacroItem
中使用KeyMacroItem
和DelayMacroItem
覆盖虚拟方法,以根据自己的要求行事。