[英]Java - What will be proper design/design pattern for this case?
我必须听事件发出类的事件; 例如, click
。 目前,我有一个类来处理来自事件发出类的事件。
someclass.clickedOnItem1()
someclass.clickedOnItem2()
someclass在哪里
class Someclass {
//functions clickedOnItem1() and clickedOnItem2()
}
请注意, Someclass
不实现接口。 我的问题是我只希望Someclass
某些子类具有此行为,并具有覆盖该行为的能力,但还希望Someclass
类中具有某些默认行为。 Someclass
的默认行为取决于特定的行为,该行为仅在某些子类中可用。 我正在考虑组合,其中每个子类可以提供处理单击事件的接口的自定义实现。 我目前正在寻找可以解决此问题的最佳设计模式方面的建议。
这不会回答什么设计模式问题,而只是考虑OOP概念:您可以在SomeClass
使用抽象,并且:
SomeClass
入口点(事件处理)方法最终SomeClass
以冻结基于子类提供的特定配置的决策。 这对于防止子类跳过要在超类中控制的逻辑非常重要。 SomeClass
可能如下所示:
abstract class Someclass {
final void clickedOnItem1(){
if(this.getConcreteOption()) {
//do if concreteOption
}
this.performClickOnItem1Action();
}
void performClickOnItem1Action() {
}
abstract boolean getConcreteOption();
}
这将迫使子类提供特定的配置,从而控制超类中的流,同时允许具体类覆盖行为。
子类如下所示:
class SomeclassA {
void performClickOnItem1Action() {
//overriding this...
}
boolean getConcreteOption() {
return true;//or false
}
}
class SomeclassB {
boolean getConcreteOption() {
return true;//or false
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.