星空网 > 软件开发 > Java

java设计模式之模板方法模式

模板方法模式

  定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。通俗的说的就是有很多相同的步骤的,在某一些地方可能有一些差别适合于这种模式,如大话设计模式中说到的考试场景中,每个人的试卷都是一样的,只有答案不一样。这种场景就适合于模板方法模式。我这次自己写的是一个汽车启动的过程,每一种汽车启动的过程都基本是一样的流程,无非是这一过程中存在一些细小差别。

模板方法模式UML图

  java设计模式之模板方法模式

模板方法模式代码

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();  }}

模板方法模式适用场景

  • 一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。
  • 各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。这是Opdyke和Johnson所描述过的“重分解以一般化”的一个很好的例子。首先识别现有代码中的不同之处,并且将不同之处分离为新的操作。最后,用一个调用这些新的操作的模板方法来替换这些不同的代码。
  • 控制子类扩展。模板方法只在特定点调用“hook”操作,这样就只允许在这些点进行扩展。

 




原标题:java设计模式之模板方法模式

关键词:JAVA

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

Review无故被删,如何保住你的Review?:https://www.ikjzd.com/articles/125258
第二次冠状病毒浪潮到来,电子商务发展再度起飞:https://www.ikjzd.com/articles/125259
圣诞旺季,亚马逊可以免费设置哪些促销功能?:https://www.ikjzd.com/articles/12526
为什么很多Shopee和Lazada卖家开始做本地号?:https://www.ikjzd.com/articles/125260
一篇文章看懂:什么是谷歌文字广告?:https://www.ikjzd.com/articles/125261
为什么我的 ASIN 无法搜到?怎么办?:https://www.ikjzd.com/articles/125263
使用时长领跑社媒,TikTok成美国成人最爱:https://www.kjdsnews.com/a/1842214.html
使用时长领跑社媒,TikTok成美国成人最爱:https://www.goluckyvip.com/news/219225.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流