繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM