模板方法模式 - 命名约定

我有一个名为“可渲染实体”的抽象类。

我有一个公共方法,它有一些围绕抽象受保护方法的逻辑。我应该如何命名这个抽象方法。是否有某种惯例,例如。,用于受保护的方法?render()render()render()doRender()makeRender()render()

public abstract class RenderableEntity extends Entity {

    private boolean visible;

    public void render(){
        if(visible){
            render();
        }
    }
    protected abstract void render();
}

编辑:我知道这个片段无法编译。我只是想知道如何命名这个抽象方法,因为我不能有具有相同名称和相同参数的方法。


答案 1

首先:仅当此类方法由模板方法独占使用时,才考虑对它们进行特殊命名。此外,您应该注释这些方法,说明它们由模板方法使用,并且任何修改都应牢记该用法。

在模板方法中组成可替换步骤的方法通常称为“hook”方法。您有时会看到它们在最后以“Hook”命名。

在您的示例中,您可能希望调用它,但是如果您可以更具体地了解它在模板方法中执行的任务,那将更具描述性。renderHook()render()

我见过使用,尽管它主要是当存在一对一的模板到钩子关系时。doXXX()

一个可能的建议。对于模板方法:stuff()

  • 如果主要是围绕单个钩子的简单控制逻辑,请命名该钩子(在上面的示例中似乎就是这种情况)stuff()doStuff()

  • 如果编排多个钩子,请使用后缀独立命名它们,并且不要以与模板相同的方式命名其中任何一个(在这种情况下,应该没有方法。stuff()HookstuffHook()


答案 2

没有关于它的约定。但我更愿意看到更有意义的名字。例如, , 或类似的东西,它告诉事实它以某种方式呈现的方式与仅仅。forceRenderrenderNowrenderImmideatelyrender