模板方法模式简介及使用示例

文章目录

  • 模板方法模式简介
  • 使用示例
  • 总结
    • 优缺点
  • 扩展联想学习

模板方法模式简介

模板方法模式(Template Method),定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。

使用示例

public abstract class AbstractClass {
     
    public void algorithmMethod(){
     
        System.out.println("公用算法实现");
        methodPart1();
        System.out.println("公用算法实现");
        methodPart2();
        System.out.println("公用算法实现");
    }

    protected abstract void methodPart1();
    protected abstract void methodPart2();

}
public class ConcreteClass1 extends AbstractClass {
     
    @Override
    public void methodPart1() {
     
        System.out.println("part1  class1");
    }

    @Override
    public void methodPart2() {
     
        System.out.println("part2  class1");
    }
}
public class ConcreteClass2 extends AbstractClass {
     
    @Override
    public void methodPart1() {
     
        System.out.println("part1  class2");
    }

    @Override
    public void methodPart2() {
     
        System.out.println("part2  class2");
    }
}
public class Client {
     
    public static void main(String[] args) {
     
        AbstractClass cls1 = new ConcreteClass1();
        AbstractClass cls2 = new ConcreteClass2();

        cls1.algorithmMethod();
        System.out.println("==================");
        cls2.algorithmMethod();
    }
}

结果输出:

公用算法实现
part1  class1
公用算法实现
part2  class1
公用算法实现
==================
公用算法实现
part1  class2
公用算法实现
part2  class2
公用算法实现

总结

优缺点

模板方法模式提供了一种公共代码抽出的思路:将一个方法拆分,然后在子类中实现方法的一部分。此时有效避免了一个方法中需要进行 if 判断造成的代码臃肿。

扩展联想学习

其他设计模式

你可能感兴趣的:(设计模式,设计模式)