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

最初に:テンプレートメソッド専用の場合は、このようなメソッドの特別な命名のみを検討してください。さらに、これらのメソッドはテンプレートメソッドで使用されていることをコメントし、変更はその使用法を念頭に置いて行う必要があります。

テンプレートメソッドで置き換え可能なステップを構成するメソッドは、「フック」メソッドと呼ばれることがよくあります。最後に「フック」という名前が付いているのを目にすることがあります。

あなたの例では、それを呼び出したいと思うかもしれませんがrenderHook()、テンプレートメソッド内で実行しているタスクをより具体的にすることができれば、render()より説明的です。

私は使用されているのを見てきdoXXX()ましたが、それは主に1対1のテンプレートとフックの関係がある場合です。

考えられる提案。テンプレートメソッドの場合stuff()

  • が主に単一のフックの周りの単純な制御ロジックである場合stuff()は、フックに名前を付けdoStuff()ます(これは上記の例の場合のようです)

  • 複数のフックを調整する場合は、それらに接尾辞stuff()を付けて個別に名前を付け、テンプレートと同じHook名前を付けないでください(この場合、メソッドはありませんstuffHook()

于 2013-01-28T14:40:17.977 に答える