如何使用与强制调用链接的抽象方法用于其他方法

Goo*_*KSL 3 java abstract-class

我面临以下问题:

我定义了一个抽象类,它包含必须由子类实现的公共生成,克隆等方法.但是我想确保在调用这些公共方法时,某些其他方法也在抽象类中执行.

一个显而易见的解决方案是创建一个受保护的抽象方法,一个公共非抽象方法,它调用抽象方法和我需要的所有其他方法.

例如:

abstract class Representation {

    public void generate(int variable) {
        myFunction();
        generateAbstract(variable);
    }

    protected abstract void generateAbstract(int variable);

    private void myFunction() {
        //do something
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是如何以更好的方式解决它,或者如果这是如何以用户友好的方式命名功能的方式.

谢谢!

das*_*ght 5

您解决此问题的方法非常标准,甚至还有一个名称:它被称为模板方法模式.我们的想法是提供一个公共方法,在高级别执行算法的步骤,并在子类中使用受保护的抽象方法的覆盖来处理算法的低级步骤.这是解决问题的正确方法.