设计模式——模板模式

99 阅读1分钟

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();
    }
}

运行结果:
image.png

3. 一些思考

ClassA和ClassB创建对象时,只是调用了createInstance即可,然后按照模板类中的定义以及各个子类中的实现去完成功能。

参考引用

模板模式:www.runoob.com/design-patt…