设计模式之模版方法模式最完美的设计模式(十)
注意这是几乎所有开源项目中最多的一个设计模式
定义: 一般是为了统一子类的算法实现步骤, 所使用的一种手段或方式. 它在父类中定义一系列算法的步骤, 而将具体的实现都推迟到子类
最典型的就是一个抽象父类, 里面有一系列的抽象方法, 而在子类中一一去实现这些方法.
- 抽象出一个接口
- 抽象类来实现方法, 还可以定义一些方法
- 具体实现类来实现抽象类的中需要实现的方法
模版方法模式一般可以用于定义构建某个对象的步骤与顺序,或者定义一个算法的骨架
- 注意点:
- 父类提供的构建步骤和顺序或算法骨架是不希望甚至是不允许子类去覆盖, 所以在某些场景中, 可以直接将父类提供的骨架的方法声明为fianl类型的
- 优点: 为了不强制子类实现不必要的抽象方法,但又不剥夺子类自由选择的权利, 由父类默认空实现一些方法, 让子类自由选择覆盖这些方法
注意点jdk源码中的模版方法模式: 应用程序类加载器 ClassLoader
- jdk的源码中首先直接注释了 使用findLoadClass查看这个类是否已经存在
- 如果不存在, 如果父类存在就是用父类的loadClass方法 否则 就是用内置加载器, 也就是原文中所属的启动加载器
- 如果上面的都失败, 那就使用findClass加载
这里有个双亲委派模型, 也就是先从父类加载, 一直到继承体系的顶层否则才会采用当前的类加载器加载
速度有点快了, 设计模式里面总有几个比较磨人的, 继续奋斗吧