首先要说一下我为什么要写这个设计模式呢?因为我在听security这门课的时候涉及到了大体如下

懵逼不,反正我第一次看的时候是比较懵逼的,所以我特意写了这篇文章来由浅入浅的方式来讲解一下。
我们再来看一个简单的图:

通过上图我们不难看出,大体意思就是把动作抽象出来(激动,大学听抽象这次一脸懵逼,我今天居然能自己讲了!),一会我们就开个车,好好讲一把。抽象出来之后由子类继承并实现,然后父类再调取子类的实现。这点就符合架构师的一条原则了 “以增量的方式去实现修改”,意思大概就是在不改原有代码的基础下去增加新的代码,就能达到自己目。
好处显而易见: 重用性更高
来,来,来 车子开起来
public abstract class Abstract {
//模板方法,上厕所之小便流程的流程 //申明为final,不希望子类覆盖这个方法,防止更改流程的执行顺序
final void washroom(){
this.go(); //第一步:走到厕所
this.takeOff(); //第二步:脱裤子
this.urinate() //第三步:尿
this.dress() //第四步:提裤子
this.out() //第五步:出厕所
//定义结构里哪些方法是所有过程都是一样的可复用的,哪些是需要子类进行实现的
//第一步:走到厕所是一样的,所以直接实现
void go(){
System.out.println("走着,上厕所去");
}
//第二步:同理
void takeOff(){
System.out.println("脱裤子,准备开始");
}
//第三步:重點來了,男生是站立而尿(别扯犊子你也想蹲下或者坐下)女生则是蹲着所以这里不同,我们要抽象这个方法
abstract void urinate();
//第四步:同理 直接实现
void dress();{
System.out.println("提上我的小裤子");
}
//第五步:同理 直接实现
void out();{
System.out.println("尿完收工");
}
}
//男生尿的类
public class boy_biubiu extend Abstract {
@Override
public void urinate(){
System.out.println("掏枪发射,战一个昏天黑地");
}
}//女生尿的类
public class girls_biubiu extend Abstract {
@Override
public void urinate(){
System.out.println("颔首低眉,来一个水淹七军");
}
}
public class Template Method{ public static void main(String[] args){
//男生上厕所
boy_biubiu boy= new boy_biubiu ();
boy.washroom();
//女生上厕所
girls_biubiu girls= new girls_biubiu ();
girls.washroom();
}
}
result:
走着,上厕所去
脱裤子,准备开始
掏枪发射,战一个昏天黑地
提上我的小裤子
尿完收工
走着,上厕所去
脱裤子,准备开始
颔首低眉,来一个水淹七军
提上我的小裤子
尿完收工
随时随地看视频