模板模式详解

模板模式(Template)

模板模式:

定义一个操作中的算法骨架,而将一些步骤延伸到子类中去,使得子类可以不改变一个算法的结构,即可重新定义该算法的某些特定步骤。这里需要复用的是算法的结构,也就是步骤,而步骤的实现可以在子类中完成。

 

模板方法模式的组成

父类角色:提供模板。

子类角色:为模板提供实现。

 

程序示例:

package com.zp.pattern.template;
/**
 * 定义一个抽象的父类:提供模板,使子类可以有个统一的执行顺序;
 * 抽象类中既可以有抽象方法,也可以有具体方法,而接口只能有抽象方法;
 */
public abstract class Template {
    //具体方法来确定操作步骤的具体顺序(模板化):
    public void doTemplate(){
       this.method1();
       this.method2();
       this.method3();
    }
    //抽象方法来确定执行步骤:
    public abstract void method1();
    public abstract void method2();
    public abstract void method3();
}
 
 
package com.zp.pattern.template;
/**
 * 子类角色:为模板提供具体实现。
 */
public class TemplateImpl extends Template {
 
    @Override
    public void method1() {
       System.out.println("step1");
    }
 
    @Override
    public void method2() {
       System.out.println("step2");
    }
 
    @Override
    public void method3() {
       System.out.println("step3");
    }
   
    //可以通过重写来修改执行顺序的
//  @Override
//  public void doTemplate() {
//     this.method3();
//     this.method2();
//     this.method1();
//  }
}
 
 
package com.zp.pattern.template;
 
public class Test {
    public static void main(String[] args) {
       Template t = new TemplateImpl();
       t.doTemplate();
    }
}

结果:step1

step2

step3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值