1. 模板模式概述
在模板模式中,一个抽象类公开定义了执行它的方法的方式/模板。
它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。
(1) 适用情况
当一些方法通用,却在每一个子类都重新写了这一方法时。
(2) 优点
封装不变部分,扩展可变部分。提取公共代码,便于维护。 行为由父类控制,子类实现。
(3) 缺点
每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大。
2. 模板模式实例
我们都知道在创建一个对象时,要分为实例化和初始化两个阶段。
(1) 创建模板类
public abstract class Class {
abstract void instantiation();
abstract void initialization();
public final void createInstance() {
// 实例化
instantiation();
// 初始化
initialization();
}
}
(2) 创建ClassA和ClassB类
public class ClassA extends Class {
@Override
void instantiation() {
System.out.println("实例化类A。");
}
@Override
void initialization() {
System.out.println("初始化类A。");
}
}
public class ClassB extends Class{
@Override
void instantiation() {
System.out.println("实例化类B。");
}
@Override
void initialization() {
System.out.println("初始化类B。");
}
}
(3) 使用模板方法创建对象
public class TemplateDemo {
public static void main(String[] args) {
Class classA = new ClassA();
classA.createInstance();
Class classB = new ClassB();
classB.createInstance();
}
}
运行结果:
3. 一些思考
ClassA和ClassB创建对象时,只是调用了createInstance即可,然后按照模板类中的定义以及各个子类中的实现去完成功能。