设计模式——模板方法模式

6 篇文章 1 订阅
2 篇文章 0 订阅
模板模式是一种设计模式,用于在不同类中提取共享的算法步骤到抽象父类,子类则实现具体细节。它允许在不修改整体结构的情况下,对算法的一部分进行定制。在框架设计中,模板模式可定义核心算法,客户端通过继承实现特定逻辑,提高代码的可重用性和可维护性。
摘要由CSDN通过智能技术生成

适用场景:
在多个类中存在相同的算法或操作步骤,但是具体实现可能不同。使用模板模式可以将这些共同的部分抽象出来,在一个父类中定义好,并在子类中实现具体的细节。

当我们需要在不改变算法整体结构的情况下,只修改算法某一小部分的实现时,可以使用模板模式。这样可以避免重复编写代码,并且保持算法的完整性和稳定性。

模板模式还可以用于框架设计中,将框架的核心算法定义成模板方法,让客户端通过继承来实现自己的业务逻辑,从而提高代码的可重用性和可维护性。

// 抽象类,定义模板方法和抽象方法
abstract class AbstractClass {
    // 模板方法
    public final void templateMethod() {
        // 公共逻辑
        System.out.println("Starting template method");

        // 钩子方法,子类可以选择是否实现
        if (hookMethod()) {
            System.out.println("Hook method returned true");
        }

        // 抽象方法,由子类实现
        primitiveOperation();

        // 公共逻辑
        System.out.println("Finishing template method");
    }

    // 钩子方法
    protected boolean hookMethod() {
        return false;
    }

    // 抽象方法
    protected abstract void primitiveOperation();
}
// 具体实现类
class ConcreteClass extends AbstractClass {
    // 实现抽象方法
    @Override
    protected void primitiveOperation() {
        System.out.println("Doing primitive operation in concrete class");
    }

    // 实现钩子方法
    @Override
    protected boolean hookMethod() {
        return true;
    }
}
// 客户端代码
public class Client {
    public static void main(String[] args) {
        AbstractClass abstractClass = new ConcreteClass();
        abstractClass.templateMethod();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值