模版方法模式定义:定义一个操做中的算法的框架,而将一些步骤延迟到子类中,使得子类能够不改变一个算法的结构便可重定义该算法的某些特定步骤算法
模版方法很简单,平时咱们可能再也不没意识中就使用到了,模版方法的方法分为两类:框架
基本方法:基本方法也叫作基本操做,是由子类实现的方法,而且在模版方法(父类的方法)被调用。ide
模版方法:能够有一个或者多个,通常是一个具体实现的方法,实现对基本方法的调度,完成固定的逻辑this
模板方法模式的优势:spa
模版方法模式的使用场景:设计
/** * @author Lin * @Date 2017/11/16. * @Description 抽象悍马模型 */ public abstract class HummerModel { /** * 能启动 */ abstract void start(); /** * 能中止 */ abstract void stop(); /** * 能打喇叭 */ abstract void alarm(); /** * 引擎能响 */ abstract void engineBoom(); /** * 能跑 */ public void run(){ this.start(); this.engineBoom(); this.alarm(); this.stop(); } }
/** * @author Lin * @Date 2017/11/16. */ public class HummerH1Model extends HummerModel { @Override void start() { System.out.println("悍马H1发动........"); } @Override void stop() { System.out.println("悍马H1熄火........"); } @Override void alarm() { System.out.println("悍马H1打喇叭........"); } @Override void engineBoom() { System.out.println("悍马H1引擎声音,轰轰轰......."); } } /** * @author Lin * @Date 2017/11/16. */ public class HummerH2Model extends HummerModel { @Override void start() { System.out.println("悍马H2发动........"); } @Override void stop() { System.out.println("悍马H2熄火........"); } @Override void alarm() { System.out.println("悍马H2打喇叭........"); } @Override void engineBoom() { System.out.println("悍马H2引擎声音,轰轰轰......."); } }
/** * @author Lin * @Date 2017/11/16. */ public class Client { public static void main(String[] args) { HummerModel h1 = new HummerH1Model(); h1.run(); HummerModel h2 = new HummerH2Model(); h2.run(); } }