模板方法模式详解附有代码案例分析(包含模板方法模式重构JDBC操作业务代码示例)

模板方法模式

一、模板方法模式的概念和角色

(一)、模板方法模式的概念

​ 模板方法模式是指定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤,属于行为型设计模式。

​ 模板方法模式实际上是封装了一个固定流程,该流程由几个步骤组成,具体步骤可以由子类进行不同实现,从而让固定的流程产生不同的结果。模板方法模式非常简单,就是类的继承机制。但是它确实一个应用非常广泛的模式。模板方法模式的本质是抽象封装流程,具体进行实现

(二)、模板方法模式的角色

​ 抽象模板(AbstractClass):抽象模板类,定义了一套算法框架/流程

​ 具体实现(ConcreteClass):具体实现类,对算法框架/流程的某些步骤进行了实现。

二、模板方法模式的应用场景

​ 1、一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现

​ 2、各子类中公共的行为被提取除了并集中在一个公共的父类中,从而避免代码重复。

三、 模板方法模式的代码示例

​ 该示例中出现的钩子方法的主要目的是用来干预执行流程,使得我们控制行为更加灵活,更加符合实际业务的需求。

​ 钩子方法的返回值一般为适合条件分支语句的返回值(boolean,int等)

AbstractCook:

public abstract class AbstractCook {
   

    public final void create() {
   

        cutUpVegetables();

        stirFry();

        eat();

        if (needWashDishes()) {
   
            washDishes();
        }
    }

    protected void cutUpVegetables() {
   
        System.out.println("切菜");
    }

    protected void stirFry() {
   
        System.out.println("炒菜");
    }

    protected void eat() {
   
        System.out.println("吃");
    }

    // 钩子方法
    protected boolean needWashDishes() {
   
        return false;
    }

    protected abstract void washDishes();
}

ACook:

public class ACook extends AbstractCook {
   

    private boolean needWashDishes = false;

    public void setNeedWash(boolean needWashDishes) {
   
        this.needWashDishes = needWashDishes;
    }

    @Override
    protected boolean needWashDishes() {
   
        return this.needWashDishes;
    }

    @Override
    protected void washDishes() {
   
        System.out.println("A洗碗");
    }
}

BCook:

public class BCook extends AbstractCook {
   

    @Override
    protected void washDishes
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值