设计模式-模板模式

模板模式:

就是预先在一个抽象类(父类)中定义顶层的骨架算法,算法中的细节延迟到子类中实现。

类图:


抽象模板结构:
模板方法:一般是具体的实现方法,它是一个包含了很多基本操作的总算法或总行为。
基本方法:分为3类,①抽象方法,在抽象类中声明,由子类去实现。 
②具体方法:在抽象类中声明并实现,子类并不实现或重写,方法前通常用 final 修饰。 
③钩子方法:在抽象类中声明并实现,而子类可以扩展(重写),通常抽象类中定义为空实现,作为默认实现。
以上3种方法,可根据需要使用。

代码:

抽象类:

package com.zzb.Test201406;

public abstract class AbstractTemplate {
    
    /**
     * 模板方法
     */
    public void execute(){
        wakeUp();
        work();
        sleep();
    }
    
    /**
     * 具体方法,一般是针对具体固定的业务,所以方法是不可变的。
     */
    private final void wakeUp(){
        System.out.println("起床、。。");
    }
    
    /**
     * 抽象方法,一般是总算法中必不可缺的一步,但是灵活性很大,不同业务有不同的实现。
     */
    protected abstract void work();
    
    /**
     * 钩子方法,一般是有默认的实现,业务不一定要自定义实现。
     */
    protected void sleep(){};
}
实现类:

package com.zzb.Test201406;

public class ConcreteTemplate extends AbstractTemplate{

    @Override
    protected void sleep() {
            System.out.println("work overtime...");
    }

    /**
     * work
     */
    @Override
    protected void work() {
            System.out.println("work hard....");
    }
    
}

测试类:

package com.zzb.Test201406;

public class Test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        new ConcreteTemplate().execute();
    }
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值