手记

模版方法设计模式

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

走着,上厕所去
脱裤子,准备开始
颔首低眉,来一个水淹七军
提上我的小裤子
尿完收工


0人推荐
随时随地看视频
慕课网APP