前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >设计模式-模板方法模式

设计模式-模板方法模式

作者头像
breezedancer
发布2018-09-12 15:43:45
2490
发布2018-09-12 15:43:45
举报
文章被收录于专栏:技术与生活

抽象类把部分业务逻辑用具体方法具体实现,或者构造方法里面实现,而把其他需要子类来完成的方法设置为抽象方法,迫使子类务必实现。每种子类都可以以不同的方式进行具体实现,这就是模板方法模式。

先来看下 UML 的类图,比较简单

这里的抽象类就是抽象模板类,定义一个或者多个抽象方法,迫使子类来完成。同时定义一个模板方法,该方法一般情况下是一个具体方法,给出模板方法的执行过程,里面调用抽象方法。

具体的实现子类是把抽象类里面务必要实现的方法进行具体实现,成为父级模板方法里面的组成部分。

看下具体代码: 首先是抽象模板类

代码语言:javascript
复制
public abstract class AbstractTemplate {    //模板方法
    public void templete(){
        first();
        second();
        third();
    }    //下面三个抽象方法需要子类来具体实现
    public abstract void first();    public abstract void second();    public abstract void third();

}

接下来看具体实现,这个具体类是把大象装进冰箱的步骤

代码语言:javascript
复制
public class ConcreteTemplete extends AbstractTemplate{    @Override
    public void first() {
        System.out.println("第一步开启冰箱");
    }    @Override
    public void second() {
        System.out.println("第二步把大象塞进去");
    }    @Override
    public void third() {
        System.out.println("第三步关闭冰箱");
    }

}

测试下

代码语言:javascript
复制
public class Client {    public static void main(String[] args) {
        AbstractTemplate template=new ConcreteTemplete();
        template.templete();
    }
}

几点经验: 1、模板方法模式把复用代码集中到父类,子类可以直接调用; 2、抽象的父类可以级联,进行有效的复用部分代码; 3、一般和生命周期(生命周期一般会有几个阶段)有关的东西可以考虑该模式

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-11-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 技术与生活 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档