模版方法设计模式
第一部分
1、模版方法设计模式
在定义功能时,功能的一部分是确定的,但是有一部分是不确定的,而确定的部分在使用不确定的部分,那么这时就将不确定的部分暴露出去,由该类的子类完成;
2、模版模式的好处
2.1、提高了代码的扩展性;
2.2、提高了代码的复用性;
3、模版模式应用的简单原则
3.1、抽象父类可以定义需要使用的某些方法,其余留给子类去实现;3.2、父类提供的方法只是定义了一个通用方法,其实现必须依赖子类的辅助;
4、举例
需求:获取一段程序运行的时间;原理:获取程序开始和结束时间并相减即可;
获取时间:System类里面有个static long currentTimeMillis()
5、模版模式的代码体现
<span style="font-size:14px;">//类也是抽象类 abstract class GetTime { // 为了避免被子类复写,将该方法定义成final public final void getTime()//不让子类复写, { // 获取开始时间 long start = System.currentTimeMillis(); // 由于需要运行的代码是不确定的,那么单独把这边的代码封装一下 // 直接调用就可以了, runCode();//这个功能是不确定的功能 // 获取结束时间 long end = System.currentTimeMillis(); System.out.println("毫秒::"+(end-start)); } // 把这个方法单独提取出来,单独封装一个方法,方便于子类去复写, // 这段代码不知道是什么,因此必然是抽象的; public abstract void runCode(); } //SubTime继承了GetTime,复写父类里面的方法 class SubTime extends GetTime { public void runCode() { for(int x=0;x<4000;x++) { System.out.println(x); } } } class TemplateDemo { public static void main(String[] args) { SubTime gt = new SubTime();//建立子类对象 gt.getTime();//调用父类方法; } }</span><strong style="font-size:18px;"> </strong>
6、运行的结果
第二部分
我的总结
1、如果父类的方法不想被子复写,那么可以在前面加上final关键字修饰;2、父类的一部分代码要暴露(public)出去,但是父类中的方法不一定是抽象的;