デザインパターン7、テンプレートメソッドパターン

テンプレートメソッドパターンは、動作中のアルゴリズムのスケルトンを定義し、サブクラスへのいくつかのステップを遅らせます。テンプレートメソッドを使用すると、サブクラスは、アルゴリズムの構造を変更せずに、アルゴリズムの特定のステップを再定義できます。

テンプレートメソッドは、不変の動作をスーパークラスに移動し、サブクラスの繰り返されるコードを削除することにより、優れたコード再利用プラットフォームを提供します。

public abstract class TestPaper {
    
    
    public abstract void Answer1(); //抽象行为,放到子类去实现
    public abstract void Answer2();

    public void Test1() {
    
                       //模板方法,重复的部分都放在父类,而逻辑的组成都是抽象行为,推迟到子类实现
        System.out.print("Test1 ");
        Answer1();
    }

    public void Test2(){
    
    
        System.out.print("Test2 ");
        Answer2();
    }
}

public class TestPaperA extends TestPaper{
    
    
    @Override
    public void Answer1() {
    
    
        System.out.println("studentA   Test1选a");     //子类各自的抽象行为的不同实现
    }

    @Override
    public void Answer2() {
    
    
        System.out.println("studentA   Test2选b");
    }
}

public class TestPaperB extends TestPaper{
    
    
    @Override
    public void Answer1() {
    
    
        System.out.println("studentB   Test1选c");
    }

    @Override
    public void Answer2() {
    
    
        System.out.println("studentB   Test2选d");
    }

    public static void main(String[] args) {
    
    
        TestPaper studentA = new TestPaperA();  //声明为父类,利用多态进行复用
        studentA.Test1();
        studentA.Test2();

        TestPaper studentB = new TestPaperB();
        studentB.Test1();
        studentB.Test2();
    }
}

出力:

Test1 studentA   Test1选a
Test2 studentA   Test2选b
Test1 studentB   Test1选c
Test2 studentB   Test2选d

おすすめ

転載: blog.csdn.net/weixin_45401129/article/details/114629288