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

1. 什么是模板方法模式

概念:

 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

 通俗的讲,模板方法模式是通过把不变行为搬到超类,去除子类里面的重复代码提现它的优势,它提供了一个很好的代码复用平台。当不可变和可变的方法在子类中混合在一起的时候,不变的方法就会在子类中多次出现,这样如果摸个方法需要修改则需要修改很多个,虽然这个这个问题在设计之初就应该想好。这个时候模板方法模式就起到了作用了,通过模板方法模式把这些重复出现的方法搬到单一的地方,这样就可以帮助子类摆脱重复不变的纠缠。

2. 模板方法模式UML

 

3. 模板方法模式代码

/**
 * 汽车模型抽象类
 *
@author
 *
@date 2018/01/29
 */
public abstract class CarModel {

    /**
     * 汽车启动
     */
    
abstract void start();

    /**
     * 汽车停止
     */
    
abstract void stop();

    /**
     * 用户并不需要关心你的车怎么启动或者停下来,可以开始、可以停止就可以了
     */
    
final public void excet() {
        this.start();
        this.stop();
    }
}

 

/**
 *
@author
 *
@date 2018/01/29
 */
public class Wcar extends CarModel {

    @Override
    void start() {
        System.out.println("大众车启动...");
    }

    @Override
    void stop() {
        System.out.println("大众车停止...");
    }
}

 

/**
 *
@author
 *
@date 2018/01/29
 */
public class Ocar extends CarModel {

    @Override
    void start() {
        System.out.println("奥迪车启动...");
    }

    @Override
    void stop() {
        System.out.println("奥迪车停止...");
    }
}

 

/**
 *
@author
 *
@date 2018/01/29
 */
public class Client {

    public static void main(String[] args) {
        CarModel carModel1 = new Wcar();
        carModel1.excet();

        CarModel carModel2 = new Ocar();
        carModel2.excet();
    }
}

4. 总结

模板方法模式就是为了将重复不变的代码提取到一个抽象类中。当我们要完成在某一细节层次一致的一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时,我们通常考虑用模板方法模式来处理。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值