-->
侧边栏壁纸
博主头像
断钩鱼 博主等级

行动起来,活在当下

  • 累计撰写 28 篇文章
  • 累计创建 34 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

设计模式—模板方法模式

halt
2020-04-14 / 0 评论 / 0 点赞 / 2015 阅读 / 0 字

模板方法模式

概念

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


/**
 * @author : mengshuo
 * @Description : 抽象模板类
 */
public abstract class SkillTemplate {
    /**
     * 基本方法
     */
    public abstract void helloWord();

    /**
     * 基本方法
     */
    public abstract void web();

    /**
     * 基本方法
     */
    public abstract void bigData();

    /**
     * 模板方法
     */
    public final void skill() {
        helloWord();
        web();
        bigData();
    }
}


/**
 * @author : mengshuo
 * @Description : 具体模板类 java技能
 */
public class JavaSkill extends SkillTemplate {
    /**
     * 实现基本方法
     */
    @Override
    public void helloWord() {
        System.out.println("Hello Java");
    }

    /**
     * 实现基本方法
     */
    @Override
    public void web() {
        System.out.println("Hello JavaWeb");
    }

    /**
     * 实现基本方法
     */
    @Override
    public void bigData() {
        System.out.println("Hello JavaBigData");
    }
}


/**
 * @author : mengshuo
 * @Description : 具体模板类 Go技能类
 */
public class GolangSkill extends SkillTemplate {
    /**
     * 实现基本方法
     */
    @Override
    public void helloWord() {
        System.out.println("Hello Golang");
    }

    /**
     * 实现基本方法
     */
    @Override
    public void web() {
        System.out.println("Hello Golang");
    }

    /**
     * 实现基本方法
     */
    @Override
    public void bigData() {
        System.out.println("Hello GolangBigData");
    }
}


/**
 * @author : mengshuo
 * @Description : 测试
 */
public class Test {
    public static void main(String[] args) {

        System.out.println("Java 模板:");
        new JavaSkill().skill();

        System.out.println("\nGolang 模板:");
        new GolangSkill().skill();

    }
}

总结

模板方法抽象类提供抽象的基本方法具体的模板方法,模板方法中定义了操作逻辑,为防止恶意操作一般模板方法都加上 final 关键词,子类对基本方法进行实现实现基本方法

0
博主关闭了所有页面的评论