我想我理解你的意思,但我也认为当你说but the methods can be added at another time?
你的意思是方法所做的事情是在另一个时间添加的。
就您而言,菜单通常需要处理一些基本的事情,例如
- 显示实际的菜单文本(我们称之为标题);
- 显示工具提示;
- 点击时做某事。
- 子子菜单项。
为了实现这一点,您可以使用两种方法之一或混合使用两种方法:
- 策略设计模式。
- 抽象类。
策略设计模式允许您指定一种行为,然后将其传递给知道如何处理该行为的某个类。简而言之,您的行为可能是单击菜单项时发生的情况。因此,基本上,您的菜单类在单击时不知道要做什么,但它会知道将调用委托给谁。这种方法将允许您拥有一个Menu
类和几个可以访问的行为。
使用抽象类类似于使用设计模式,但是,您最终会为每个想要拥有的不同菜单创建一个新的具体类。
因此,我认为最好的结果会介于两者之间。
例如,您可以将Menu
父类创建为abstract
,具有诸如 , 等属性Title
。Tooltip
然后您可以添加一个名为的方法,该方法onActionPerformed
接受一些对象,该对象处理单击菜单项时发生的情况。最后,您可以创建抽象方法,例如onBeforeActionPerformed
and onAfterActionPerformed
,这本质上是拦截器,允许您在事件处理之前和之后执行逻辑。
然后,您可以使用诸如此类的东西来扩展Menu
该类NonInterceptibleMenu
以处理不同的场景。