首页 / 设计模式 / 设计模式-------模板方法模式
设计模式-------模板方法模式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了设计模式-------模板方法模式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1791字,纯文字阅读大概需要3分钟。
内容图文
模板方法模式定义:定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
抽象类的父类,父类中定义了基本方法,模板方法和钩子方法。
基本方法:父类中定义,在子类中实现。
模板方法:父类中实现,调用基本方法,子类继承。
钩子方法:在父类中定义,变相的实现父类调用子类的方法。
具体例子如下:
父类:
1 package pattern.templateMethod; 2 3 public abstract class HummerModel { 4 5 // 基本方法 6 protected abstract void start(); 7 8 // 基本方法 9 protected abstract void stop(); 10 11 // 基本方法 12 protected abstract void alarm(); 13 14 // 基本方法 15 protected abstract void engineBoom(); 16 17 // 模板方法 18 protected void run() { 19 this .start(); 20 this .engineBoom(); 21 if (this.isAlarm()) { 22this.alarm(); 23 } 24this.stop(); 25 } 2627// 钩子方法28protectedboolean isAlarm() { 29returntrue; 30 } 3132 }
子类1:
1 package pattern.templateMethod; 2 3 public class HummerH1Model extends HummerModel { 4 5privateboolean alarmFlag = true; 6 7 @Override 8protectedvoid start() { 910 System.out.println("H1 start...."); 11 } 1213 @Override 14protectedvoid stop() { 15 System.out.println("H1 stop....."); 16 } 1718 @Override 19protectedvoid alarm() { 20 System.out.println("H1 alarm....."); 21 } 2223 @Override 24protectedvoid engineBoom() { 25 System.out.println("H1 engineBoom"); 26 } 2728 @Override 29protectedboolean isAlarm() { 30returnthis.alarmFlag; 31 } 3233publicvoid setAlarm(boolean isAlarm){ 34this.alarmFlag = isAlarm; 35 } 363738 }
子类2:
package pattern.templateMethod; public class HummerH2Model extends HummerModel { @Override protectedvoid start() { System.out.println("H2 start...."); } @Override protectedvoid stop() { System.out.println("H2 stop....."); } @Override protectedvoid alarm() { System.out.println("H2 alarm....."); } @Override protectedvoid engineBoom() { System.out.println("H2 engineBoom"); } }
alarm方法是否调用由子类中的setAlarm决定,实现了在父类中调用子类的方法。
原文:http://www.cnblogs.com/maple92/p/6670595.html
内容总结
以上是互联网集市为您收集整理的设计模式-------模板方法模式全部内容,希望文章能够帮你解决设计模式-------模板方法模式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。