设计模式之模板方法模式

模板方法,见名知意,我不再啰嗦,直接上代码,代码很好理解,我觉得看代码比磨磨唧唧码那么多字强多了!

模板类(抽象类)

package com.zyh.designpatterns.com.zyh.templatemethod;

public abstract class AbstractTemplate {

    /*
     * 模板方法,起到模板作用
     */
    public final void templateMethod()
    {
         abstractMethod();
         hookMethod();
         concreteMethod();
    }

    /*
     * 基本方法的声明(必须实现)
     */
    public abstract void abstractMethod();

    /*
     * 基本方法的空实现(可用于hook)
     */
    public void hookMethod()
    {

    }

    /*
     * 子类不可变方法(实现一些固定的逻辑)
     */
    private void concreteMethod()
    {
        System.out.println("抽象类中实现一些固定的逻辑");
    }
}

子类去继承上边的抽象类

package com.zyh.designpatterns.com.zyh.templatemethod;

public class ConcreteTemplate extends AbstractTemplate{

    /*
     * 必须实现的方法
     */
    @Override
    public void abstractMethod() {
         /* 实现一些具体的逻辑  */
        System.out.println("实现一些具体的逻辑");
    }

    @Override
    public void hookMethod() {
        /* 实现一些hook逻辑或者不实现 */
        System.out.println("实现一些hook逻辑或者不实现");
    }

    public static void main(String[] args)
    {
       ConcreteTemplate ct = new ConcreteTemplate();
       ct.templateMethod();
    }
}

运行结果

实现一些具体的逻辑
实现一些hook逻辑或者不实现
抽象类中实现一些固定的逻辑

你可能感兴趣的:(设计模式之模板方法模式)