首页 / 设计模式 / java设计模式之模板方法模式
java设计模式之模板方法模式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java设计模式之模板方法模式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1543字,纯文字阅读大概需要3分钟。
内容图文
模板方法模式
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。通俗的说的就是有很多相同的步骤的,在某一些地方可能有一些差别适合于这种模式,如大话设计模式中说到的考试场景中,每个人的试卷都是一样的,只有答案不一样。这种场景就适合于模板方法模式。我这次自己写的是一个汽车启动的过程,每一种汽车启动的过程都基本是一样的流程,无非是这一过程中存在一些细小差别。
模板方法模式UML图
模板方法模式代码
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 protectedvoid start() { System.out.println("大众车启动 。。。。。。。。突突突"); } @Override protectedvoid stop() { System.out.println("大众车停车。。。。。。。。。"); } }
package com.roc.template; public class Ocar extends CarModel{ @Override protectedvoid start() { System.out.println("奥迪 无匙启动 突突突"); } @Override protectedvoid 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(); } }
模板方法模式适用场景
-
一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。
-
各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。这是Opdyke和Johnson所描述过的“重分解以一般化”的一个很好的例子。首先识别现有代码中的不同之处,并且将不同之处分离为新的操作。最后,用一个调用这些新的操作的模板方法来替换这些不同的代码。
-
控制子类扩展。模板方法只在特定点调用“hook”操作,这样就只允许在这些点进行扩展。
原文:http://www.cnblogs.com/liaoweipeng/p/5790395.html
内容总结
以上是互联网集市为您收集整理的java设计模式之模板方法模式全部内容,希望文章能够帮你解决java设计模式之模板方法模式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。