标签:
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。通俗的说的就是有很多相同的步骤的,在某一些地方可能有一些差别适合于这种模式,如大话设计模式中说到的考试场景中,每个人的试卷都是一样的,只有答案不一样。这种场景就适合于模板方法模式。我这次自己写的是一个汽车启动的过程,每一种汽车启动的过程都基本是一样的流程,无非是这一过程中存在一些细小差别。
package com.roc.template; /** * 汽车模型 * 模型模式 * @author liaowp * */ public abstract class CarModel { /** * 汽车启动 */ protected abstract void start(); /** * 停车 */ protected abstract void stop(); /** * 用户并不需要关注你的车怎么启动或者停下来的,可以开可以停就可以啦 */ final public void excet(){ this.start(); this.stop(); } }
package com.roc.template; /** * 大众车 * @author liaowp * */ public class Wcar extends CarModel{ @Override protected void start() { System.out.println("大众车启动 。。。。。。。。突突突"); } @Override protected void stop() { System.out.println("大众车停车。。。。。。。。。"); } }
package com.roc.template; public class Ocar extends CarModel{ @Override protected void start() { System.out.println("奥迪 无匙启动 突突突"); } @Override protected void stop() { System.out.println("奥迪 停车 "); } }
package com.roc.template; /** * 客户端 * @author liaowp * */ public class Client { public static void main(String[] args) { CarModel wcar=new Wcar();//家里的第一辆车,作为用户的我们并不需要关注车怎么启动的.子类变量变为父类。多态 wcar.excet(); //突然家里需要第二辆车了 奥迪 我们也不需要关注他怎么生产启动的 CarModel ocar=new Ocar(); ocar.excet(); } }
模板方法模式适用场景
标签:
原文地址:http://www.cnblogs.com/liaoweipeng/p/5790395.html