java - 模板方法模式 - 命名约定

标签 java naming-conventions template-method-pattern

我将这个抽象类命名为 RenderableEntity

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

public abstract class RenderableEntity extends Entity {

    private boolean visible;

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

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

最佳答案

第一:只有在模板方法独占时,才考虑对这些方法进行特殊命名。此外,您应该评论这些方法,说明它们由模板方法使用,并且在进行任何修改时都应牢记该用法。

构成模板方法中可替换步骤的方法通常称为“ Hook ”方法。有时您会看到它们的名称末尾带有“Hook”。

在您的示例中,您可能希望将其称为 renderHook(),但如果您可以更具体地了解它在模板方法 render(),这将更具描述性。

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

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

  • 如果 stuff() 主要是围绕单个 Hook 的简单控制逻辑,则将 Hook 命名为 doStuff()(在您的示例中似乎就是这种情况以上)

  • 如果 stuff() 编排了几个钩子(Hook),用 Hook 后缀独立命名它们,不要将它们命名为 任何与模板相同(在这种情况下,应该没有 stuffHook() 方法。

关于java - 模板方法模式 - 命名约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14564162/

相关文章:

c# - 模板方法模式——防止在派生类中直接调用方法

java - 使用 or 进行 Python 赋值

java - 获取 Java SSLSocket 的可信 X509Certificate

java - 对话框中的取消按钮不关闭对话框

java - Jar 文件命名约定

.net - 您发现自己经常在类(class)前面/附加哪些名字?

java - 全局拦截热键,但保持原始行为

naming-conventions - "Pascal Case"这个词是从哪里来的?

用于被覆盖的属性和方法的 Python 命名约定

java - 模板方法调用 super 并使用实现