gpt4 book ai didi

Java - 对于这种情况,正确的设计/设计模式是什么?

转载 作者:行者123 更新时间:2023-11-30 02:08:18 24 4
gpt4 key购买 nike

我必须监听来自事件发射类的事件;例如点击。当前我有一个类可以处理来自事件发射类的事件,如下所示。

someclass.clickedOnItem1()
someclass.clickedOnItem2()

某个类在哪里

class Someclass {
//functions clickedOnItem1() and clickedOnItem2()
}

请注意,Someclass 没有实现接口(interface)。我的问题是,我只希望 Someclass 的某些子类具有此行为,并且有能力覆盖该行为,但在类 Someclass 中也有一些默认行为。 Someclass 的默认行为取决于仅在某些子类中可用的特定行为。我正在考虑组合,其中每个子类都可以提供处理单击事件的接口(interface)的自定义实现。我目前正在寻求有关可以解决此问题的最佳设计模式的建议。

最佳答案

这不会回答什么设计模式问题,而只是考虑OOP概念:您可以在SomeClass中使用抽象,并且:

  • 声明抽象方法以从具体类获取细节
  • 将入口点(事件处理)方法设为 SomeClass 中的 final方法,以根据子类提供的特定配置卡住决策。这对于防止子类跳过您想要在父类(super class)中控制的逻辑非常重要。

SomeClass 可以如下所示:

abstract class Someclass {
final void clickedOnItem1(){
if(this.getConcreteOption()) {
//do if concreteOption
}

this.performClickOnItem1Action();
}

void performClickOnItem1Action() {

}

abstract boolean getConcreteOption();
}

这将强制子类提供特定的配置,保持对父类(super class)中流程的控制,同时允许具体类覆盖行为。

子类可以如下所示:

class SomeclassA {
void performClickOnItem1Action() {
//overriding this...
}

boolean getConcreteOption() {
return true;//or false
}
}

class SomeclassB {
boolean getConcreteOption() {
return true;//or false
}
}

关于Java - 对于这种情况,正确的设计/设计模式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50831168/

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