gpt4 book ai didi

Java,类对象彼此有不同的方法?

转载 作者:行者123 更新时间:2023-11-29 05:00:57 24 4
gpt4 key购买 nike

这似乎是一个奇怪的问题,但我正在尝试练习编写可重用代码,或者至少尝试练习以正确的方式思考它,如果您明白我的意思吗?我有一项作业涉及编写带有几个不同菜单的文本界面。因此,有两种方法:(1) 每个菜单的类(草率)或(2)包含所有菜单信息的类(不是草率的)。

既然我正在写这篇文章,感觉这可能是一种不好的做法,但是是否可以有一个类包含菜单的基本组件(标题、MenuOptions 列表等),但是方法可以其他时间添加?

或者,如果这是不可能的/不可取的,这将是做这样的事情通常首选的方式,(a) 单独的类用于单独的菜单,或 (b) 一个包含不同菜单的所有代码的大类菜单?

最佳答案

我想我理解你的意思,但我也认为当你说 but the methods can be added at other time? 你的意思是方法的作用是在另一个时间添加的时间

菜单,就你而言,通常需要处理一些基本的事情,比如

  • 显示实际的菜单文本(我们称之为标题);
  • 显示工具提示;
  • 点击时执行操作。
  • 子子菜单项。

要实现这一点,您可以使用两种方法之一或混合使用两种方法:

  1. strategy设计模式。
  2. 抽象类。

策略设计模式允许您指定一个行为,然后将其传递给某个知道如何处理该行为的类。简而言之,您的行为可能是单击菜单项时发生的情况。所以基本上,您的菜单类不会知道单击它时要做什么,但它知道调用将委托(delegate)给谁。这种方法将允许您拥有一个 Menu 类和它可以访问的多个行为。

使用抽象类类似于使用设计模式,但是,您最终会为每个想要的不同菜单创建一个新的具体类。

因此,我认为最好的结果应该介于两者之间。

例如,您可以将 Menu 父类创建为 abstract,并具有诸如 TitleTooltip 等属性等等。然后您可以添加一个名为 onActionPerformed 的方法,该方法接受一些对象,该对象处理单击菜单项时发生的情况。最后,您可以创建抽象方法,例如 onBeforeActionPerformedonAfterActionPerformed,这实际上是拦截器,允许您在事件处理之前和之后执行逻辑。

然后您可以使用诸如 NonInterceptibleMenu 之类的东西来扩展 Menu 类,以处理不同的场景。

关于Java,类对象彼此有不同的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32121686/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com