[设计模式扫盲]---(4)模板方法模式

Author:赵志乾
Date:2019-03-10
Declaration:All Right Reserved!!!

 

1、模式解释

所谓的模板方法模式,是指在进程运行期间,通用处理流程在父类方法中执行(模板方法),而涉及到流程中某些细节点会跳转到子类方法去执行的一种设计理念。

我们知道,通常类层次设计中,倾向于将流程执行重点放于子类中,即在子类中调用父类实现的方法,通过子类中增加方法来实现新功能或者在子类中重写父类的方法可以改变程序的行为。但在模板方法模式中,我们会站在父类的角度去思考,核心流程在父类方法中,这些方法称为模板方法,模板方法只是确定了处理流程,对于具体细节会由抽象方法的调用来为子类方法留下槽位。子类在实现时只须按照诉求实现父类中的抽象方法,即可同父类协作,完成模板方法所定义的处理流程。

2、模式补充

模板方法模式其最大的特点是父类和子类关联性较大,可以将一些通用的逻辑处理归置到模板方法中,差一点交由子类来实现。对于使用模板方法模式的设计中,在实现子类时,我们需要理解其所实现抽象方法在模板方法中的调用时机,否则,很难设计出合适的子类。

3、实现

模板类:

package com.zhaozhiqian;

public abstract class TemplateClass {

    // 模板方法:定义通用的处理流程
    public void display(String name){
        start();
        sayHello(name);
        stop();
    }
    // 子类需要实现的具体功能点
    protected abstract void start();
    protected abstract void sayHello(String name);
    protected abstract void stop();
}

子类:

package com.zhaozhiqian.impl;

import com.zhaozhiqian.TemplateClass;

public class Start extends TemplateClass {

    // 子类实现细节功能点,父类在模板方法中进行功能点组合
    @Override
    protected void start() {
        System.out.println("*********start**********");
    }
    @Override
    protected void sayHello(String name) {
        System.out.println(name+"  hello!");
    }
    @Override
    protected void stop() {
        System.out.println("*********stop**********");
    }
}

测试类:

package com.zhaozhiqian;

import com.zhaozhiqian.impl.Start;

public class Main {

    public static void main(String[] args) {
        TemplateClass template = new Start();
        template.display("小王");
    }
}

输出结果:

*********start**********
小王  hello!
*********stop**********

 

参考资料:《图解设计模式》

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值