17

我有这个名为RenderableEntity的抽象类。

我有一个公共方法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();
}

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

4

3 回答 3

17

第一:只有在模板方法专用的情况下,才考虑对这些方法进行特殊命名。此外,您应该评论这些方法,说明它们由模板方法使用,并且应该在考虑到该用法的情况下进行任何修改。

在模板方法中构成可替换步骤的方法通常称为“挂钩”方法。您有时会看到它们以“Hook”结尾。

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

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

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

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

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

于 2013-01-28T14:40:17.977 回答
1

没有关于它的约定。但我更愿意看到更有意义的名字。例如forceRender,或类似的东西renderNowrenderImmideately它说明了它以某种方式呈现的事实,而不仅仅是render.

于 2013-01-28T14:33:40.423 回答
0

模板方法模式没有关于命名约定的任何此类指南。但是请给出适当的名称,以便它清楚地解释方法的意图,并且将来更容易维护

于 2013-01-28T14:35:27.293 回答