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

本文介绍了一种设计模式——模板方法模式,它定义了一个算法的操作框架,允许子类重定义某些步骤而不改变整体结构。适用于多个子类有相同方法且基本逻辑相同的情况。

1 定义

定义一个算法中的操作框架,而将算法中的一些步骤进行抽象,使这些步骤延迟到子类中去实现,从而实现子类不改变算放结构就可以重定义算法的某些特定步骤。

2 类图及实例

通过定义的描述我们知道了模板方法模式中的抽象类有一些模板方法,这些模板方法中会调用一些基本方法(抽象方法),而这些基本方法的实现就交给了子类来完成。

具体代码实现如下:

/**
 * 抽象父类
 */
abstract class AbstractClass{

    /**
     * 基本方法1
     */
    protected abstract void basicMethodOne();

    /**
     * 基本方法2
     */
    protected abstract void basicMethodTwo();

    /**
     * 模板方法
     */
    public final void templateMethod(){
        basicMethodOne();
        basicMethodTwo();
    }
}


class concreteClass1 extends AbstractClass{

    @Override
    protected void basicMethodOne() {
        System.out.println("I'm basicMethodOne in concreteClass1");
    }

    @Override
    protected void basicMethodTwo() {
        System.out.println("I'm basicMethodTwo in concreteClass1");
    }
}

class concreteClass2 extends AbstractClass{

    @Override
    protected void basicMethodOne() {
        System.out.println("I'm basicMethodOne in concreteClass2");
    }

    @Override
    protected void basicMethodTwo() {
        System.out.println("I'm basicMethodTwo in concreteClass2");
    }
}

3 模板方法模式的优缺点

(1)优点

  • 封装不变部分,扩展可变部分。
  • 提取公共部分代码便于维护。
  • 行为由父类控制,子类实现。

(2)缺点

按照一般的设计思路,抽象类负责完成最基础的方法,而具体的方法使用及实现由子类完成。而模板方法模式的设计思路正好相反,这样会增加代码的阅读难度。

4 使用场景

(1)多个子类有相同的方法,并且基本逻辑相同。

(2)重要的、复杂的算法,可以将核心算法抽象成模板,然后子类实现周边算法。

(3)针对重构的时候,可以将相同的算法抽象成模板,针对不同的部分由子类实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值