java设计模式之模板方法设计模式

模板方法设计模式用于定义算法的骨架,将可变行为留给子类实现。适用于一次性实现不变部分并允许子类定制。举例说明,前端和后端开发虽然工作内容不同,但有共同的流程,如打卡、吃饭等。通过模板方法,可以提高代码复用性,减少重复工作。在实际应用中,可以通过抽象类定义模板,并允许子类根据需求覆盖特定方法,例如在程序员加班场景中,通过isNeedWorkOverTime()方法判断是否需要加班。模板方法遵循好莱坞设计原则,实现了父类对子类的控制。
摘要由CSDN通过智能技术生成
今天来实现一下java设计模式的一种,叫做模板方法设计模式。

模板方法设计模式

模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。

模板方法定义了一个算法的步骤,并允许子类为一个或多个步骤提供实现。

适用场景

一次性实现一个算法的不变部分,并将可变的行为留给子类来实现。
各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。
需要通过子类来决定父类算法中某个步骤是否执行,实现子类对父类的反向控制。

说白了,就是父类负责调用方法,而子类负责把方法具体化,父类把公共的模块抽取出来,子类针对各自不同的行为进行处理。
well,可能还是有些抽象,我们来看例子。

假如,我们现在拿到需求,并进行开发,那么前端和后端所做的工作是不同的,但是前端和后端某些部分是一样的,比如进公司打卡,喝水,吃饭,下班,前端和后端只是工作的内容是不同的,但是大部分是一样的,所以把公共部分抽取出来,让代码复用。

下面看没有使用模式之前的例子:

前端类:

/**
 * @author LIBOFEI
 * @ClassName Previous
 * @description 前端类
 * @date 2020/6/26 14:25
 * @Version 1.0
 **/
public class Previous {
   

    //前端一天流程
    public void today(){
   
        call();
        breakFast();
        working();
        workCommit();
        workAfter();
    }

    public void call(){
   
        System.out.println("打卡");
    }

    public void breakFast(){
   
        System.out.println("吃早餐");
    }

    public void working(){
   
        System.out.println("前端开始工作");
        System.out.println("npm run dev...");
    }

    public void workCommit(){
   
        System.out.println("提交代码");
    }

    public void workAfter(){
   
        System.out.println("下班");
    }
}

后端类

/**
 * @author LIBOFEI
 * @ClassName After
 * @description 后端类
 * @date 2020/6/26 14:22
 * @Version 1.0
 **/
public class After {
   

    //后端流程
    public void today(){
   
        call();
        breakFast();
        working();
        workCommit();
        workAfter();
    }

    public void call(){
   
        System.out.println
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值