图解设计模式(12) 模板模式

一、应用场景

    用于一些具体流程固定,但是其中的某一个/一些步骤内容有变动的情形。

    如:去银行办理业务

分3个步骤:

    模板方法定义了一个操作中的流程骨架将某些步骤延迟到子类中实现。这样,子类可以在不改变算法结构的前提下重新定义该算法的某些特定步骤。

 

二、具体实现

  •     实现要点

1. 定义一个abstract template类,在其中定义一个子类必须实现的abstract 方法,和一个固定的流程方法。

2. 子类extends template类,实现父类中的abstract方法。

  •     代码实现

1.定义template类,规定固定流程和abstract方法。

public abstract class Template {
    private Template template;
    
    public void setTemplate(Template template){
        this.template = template;
    }
    
    /**
     * 定义抽象方法,子类中必须实现
     */
    public abstract void doBusiness();
    
    /**
     * 定义固定流程,定义为final不让子类重写
     */
    public final void process(){
        System.out.println("取号");
        this.doBusiness();
        System.out.println("给工作人员打分");
    }
}

2.子类实现父类中的abstract方法,完成具体工作。

/**
 * 存钱
 */
public class SaveMoney extends Template {

    @Override
    public void doBusiness() {
        System.out.println("我来存款500万。");
    }
}

/**
 * 办卡
 */
class ApplyCard extends Template{

    @Override
    public void doBusiness() {
        System.out.println("我来办一张借记卡。");
    }
}

测试类

public class ClientTest {

    public static void main(String[] args) {
        SaveMoney saveMoney = new SaveMoney();
        saveMoney.process();
        
        System.out.println("----------------");
        ApplyCard applyCard = new ApplyCard();
        applyCard.process();
    }
}

测试结果

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值