设计模式---模板方法

目录

 

一、模板方法(通过继承封装算法)定义

二、特点

1、设计原则

2、应用实例(AQS)

三、模板方法的格式


一、模板方法(通过继承封装算法)定义

在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类在不改变算法结构的情况下,从新定义算法中的某些步骤。

1、“模板方法”定义了算法的步骤,把这些步骤的实现延迟到子类;
2、模板方法的抽象类可以定义具体的方法,抽象的方法和钩子;
3、抽象方法由子类实现;
4、钩子是一种方法,它在抽象类中不做事或者只做默认的事,子类可以选择要不要去覆盖它;
5、为了防止子类改变模板中的算法,可以将模板方法声明为final;
6、工厂方法是模板方法的一种特殊版本;

二、特点

1、设计原则

好莱坞原则:别调用我们,我们会调用你

2、应用实例(AQS)

三、模板方法的格式

public abstract class AbstractClass {
     //模板方法
     final void templateMethod() {
           primitiveOperative1();//抽象的方法
           primitiveOperative2();  //抽象的方法
           concreteOperative();  //具体的方法
           hook(); //钩子 空方法
     }
     //子类需要实现的抽象方法
     abstract void primitiveOperative1();
     abstract void primitiveOperative2();
     final void concreteOperative() {
          //具体实现
     }
     //钩子函数,子类可以自己决定要不要覆盖
     void hook() {}
}

参考:

《head first 设计模式》

猜你喜欢

转载自blog.csdn.net/l1394049664/article/details/81567950