对象行为型

介绍

* 模板顾名思义就是一个有固定格式的样板
* 例如日常遇到的填写某些表单,表单里面是有规定需要填什么的,这就是固定的东西,而只有你自己填写的内容信息是动态的可变的

定义

* 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中
* 模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤

应用

* 有固定的步骤,也有可变的步骤

入门案例:

UML图解:

代码:

[AbstractTemplate]

AbstractTemplate:

public abstract class AbstractTemplate {

    //抽象方法:可变部分
    public abstract void say();

    //模板方法:不可变部分
    final public void templateMethod(){
        say();
        System.out.println("开始吃米田共");
        System.out.println("结束吃米田共");
    }

}

测试:

public class Main {
    public static void main(String[] args){

        new AbstractTemplate() {
            @Override
            public void say() {
                System.out.println("我是普通人,我接受不了");
            }
        }.templateMethod();

        System.out.println("===================================================");

        new AbstractTemplate() {
            @Override
            public void say() {
                System.out.println("我是超人,我没关系");
            }
        }.templateMethod();

        /**
         * output:
         *  我是普通人,我接受不了
	         开始吃米田共
	         结束吃米田共	
	         ===================================================
	         我是超人,我没关系
	         开始吃米田共
	         结束吃米田共
         */

    }
}

原文地址:https://www.cnblogs.com/tandi19960505/p/8179093.html