首先要说一下我为什么要写这个设计模式呢?因为我在听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: 走着,上厕所去 脱裤子,准备开始 掏枪发射,战一个昏天黑地 提上我的小裤子 尿完收工 走着,上厕所去 脱裤子,准备开始 颔首低眉,来一个水淹七军 提上我的小裤子 尿完收工