栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Template Method-模板方法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Template Method-模板方法

概述:
模板设计的模式的核心思想:
1,抽象类中的非抽象方法用来定义程序执行的流程
2,抽象类中的抽象方法是整个流程中的各个组成部分,子类进行具体的实现.

现实生活中的对比:
花哥夜生活的整个流程:
1,和兄弟们集合(固定就是开车,花哥一步也不想走,所以就正普通的方法)
2,吃饭(吃什么每次花哥都想换换花样,所以是抽象方法)
3,喝酒(吃完饭第二场必须再喝点,在哪喝花哥通常也要每次都换换,所以也是抽象的)
4,推油(这个是花哥的最爱,必须每次都要换换花样)
那么对应到java程序,以上步骤中所有每次都需要改变的项目都定义成抽象的方法,
花哥每次都要对这些步骤做个性化的安排,所以每次都重写就好了.
代码演示 模板抽象类
public abstract class OneNightOfFlower {

    public void haveHun() {
        // 0,集合
        getTogether();
        // 1,先吃个饭
        eat();
        // 2,再去喝点
        drink();
        // 3,再洗个澡
        takeAmazingBath();
    }

    private void getTogether() {
        System.out.println("集合");
    }

    protected abstract void takeAmazingBath();
    protected abstract void drink();
    protected abstract void eat();
}
子类实现
public class TonightOfFlower extends OneNightOfFlower {

    @Override
    protected void takeAmazingBath() {
        System.out.println("推油");
    }

    @Override
    protected void drink() {
        System.out.println("喝白的");
    }

    @Override
    protected void eat() {
        System.out.println("吃海鲜");
    }
}
测试类
public class TonightOfFlowerTest {

    public static void main(String[] args) {

        // 重写了模板类的子类
        TonightOfFlower tonightOfFlower = new TonightOfFlower();
        // 调用父类的方法
        tonightOfFlower.haveHun();
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/781843.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号