模板方法设计模式

模板方法设计模式是一种行为型设计模式,其核心思想是定义一个算法的骨架,而将一些步骤延迟到子类中实现。这种模式通过将共同的行为封装在一个模板方法中,以确保各个子类在不改变算法结构的情况下可以重新定义特定步骤的实现。

说人话: 就是定义了一个流程,具体的流程中的操作细节交给子类来实现。

举个例子: 每个上班族(抽象父类)的一天,起床、上班、下班,这是打工人一天,但是每个人(子类)的上班内容不一样。

假设这是一个人一天的生活

public abstract class OneDay {
    // 使用final来防止被子类重写
    public final void flow(){
        eatBreakfast();
        eatLunch();
        playGame();
    }

    protected void eatBreakfast(){
        System.out.println("吃早饭");
    }

    protected void eatLunch(){
        System.out.println("吃午饭");
    }

    protected void playGame(){
        System.out.println("打游戏");
    }
}
public class Thursday extends OneDay{
    @Override
    protected void eatLunch() {
        System.out.println("疯狂星期四,我要吃KFC");
    }
}

今天比较特殊,因为今天是星期四,其他的流程不变,只是从平常的 "午饭" 变成了 "KFC"

好处:

  • 实现了最大化代码复用。父类的模板方法和已实现的某些步骤会被子类继承而直接使用;
  • 既统一了算法,也提供了很大的灵活性。父类的模板方法确保了算法的结构保持不变,同时由子类提供部分步骤的实现

使用场景

执行过程中一系列步骤基本相同: 当需要完成一个过程,这个过程涉及一系列步骤,这些步骤在整体上是相同的,但在具体实现时可能有所不同。这时可以考虑使用模板方法模式。通过在父类中定义一个模板方法,将这些共同的步骤抽象出来,而将不同的实现细节延迟到子类中去实现,以实现代码的重用和减少重复性工作。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值