今天来实现一下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