模板方法模式1

/**
 * @author 
 * @version 0.1
 * 模板设计模式 -- 时间消耗模板
 *        使用该模板测试方法的运行时间
 */
public abstract class TimeExpendTemplate {
    //创建抽象方法,在子类中具体实现
    public abstract void method();

    /**
     * 创建执行模板,在控制台输出执行method()消耗的时间
     */
    public void runMethod(){
        Long t1 = System.currentTimeMillis();
        method();
        Long t2 = System.currentTimeMillis();
        System.out.println(t2-t1);
    }
}


/**
 * 创建TimeExpendTemplateTest类继承TimeExpendTemplate模板,
 * 重写method的方法,实例化后调用父类的runMethod方法,
 * 在控制台输出method方法运行消耗的时间
 * @author 
 * @version 0.1
 */
public class TimeExpendTemplateTest extends TimeExpendTemplate {

    public int getValue(int i){
        if(i == 0){
            return 0;
        }
        if (i == 1){
            return 1;
        }
        return getValue(i-1)+getValue(i-2);
    }

    /**
     * 重写父类method方法
     */
    @Override
    public void method() {
        getValue(45);
    }

    public static void main(String[] args) {
        TimeExpendTemplate t = new TimeExpendTemplateTest();
        //调用模板中的runMethod方法
        t.runMethod();
    }
}
运行结果:9137(每次执行结果或许不同)

模板方法模式其实是利用抽象类来设计程序的骨架,将具体的部分留给子类实现,调用父类的方法运行子类实现的方法并完成一些额外的功能,如打印消耗时间等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值