算法、逻辑大体固定相同,某些逻辑在不同场景下有不同的实现时,可以将公共部分抽取到父类中作为模板实现,其他的由子类实现。
角色: 抽象类/抽象模板,子类(实现特定逻辑)
过程:
//抽象类 abstract class AbstractClass { //模板方法 public void TemplateMethod() { SpecificMethod(); abstractMethod1(); abstractMethod2(); } //具体方法-公共逻辑 public void specificMethod() { System.out.println("抽象类中的具体方法被调用..."); } //抽象方法1 public abstract void abstractMethod1(); //抽象方法2 public abstract void abstractMethod2(); //勾子方法,子类需要就覆盖,不需要就不管 public void sayHello(){}; } //具体子类 class ConcreteClass extends AbstractClass { public void abstractMethod1() { System.out.println("抽象方法1的实现被调用..."); } public void abstractMethod2() { System.out.println("抽象方法2的实现被调用..."); } }