模板模式详解(设计实现及应用场景)

模板模式详解(设计实现及应用场景)-mikechen

模板模式是常用的Java设计模式,下面我重点详解模板模式的角色实现与应用场景@mikechen

模板模式定义

模板模式是一种行为设计模式,模板模式的核心思想是将共同的算法流程封装在一个抽象类中,具体实现则在子类中实现。

模板模式可以用来处理一些复杂的算法与步骤,通过将这些步骤封装在一个模板方法中,我们可以使得算法的结构更清晰。

 

模板模式设计

模板模式的设计实现,主要包含以下角色:

模板模式详解(设计实现及应用场景)-mikechen

1.抽象类(Abstract Class)

定义了算法的骨架,包含了一些抽象方法和具体方法,抽象方法由子类来实现。

抽象类是模板模式的核心,它包含了一个模板方法和多个具体方法。

 

2.具体类(Concrete Class)

实现了抽象类中的抽象方法,以便在模板方法中被调用。

每个具体类实现的具体方法可以不同,但是它们都共享抽象类中定义的具体方法。

 

模板模式实例

模板模式的使用,需要实现上面谈到的抽象类以及具体类。

如下所示:

abstract class AbstractClass {
    public final void templateMethod() {
        commonStep1();
        specificStep2();
        commonStep3();
    }

    protected void commonStep1() {
        System.out.println("This is a common step 1 that is executed by all subclasses");
    }

    protected abstract void specificStep2();

    protected void commonStep3() {
        System.out.println("This is a common step 3 that is executed by all subclasses");
    }
}

class ConcreteClassA extends AbstractClass {
    @Override
    protected void specificStep2() {
        System.out.println("This is a specific implementation of step 2 for ConcreteClassA");
    }
}

class ConcreteClassB extends AbstractClass {
    @Override
    protected void specificStep2() {
        System.out.println("This is a specific implementation of step 2 for ConcreteClassB");
    }
}

在这个示例中:

  • 我们定义了一个抽象类 AbstractClass,其中包含了一个模板方法 templateMethod 和一些抽象方法和具体方法;
  • 具体类 ConcreteClassA 和 ConcreteClassB 继承了抽象类 AbstractClass,并实现了抽象方法 ,以便在模板方法中被调用。

现在我们可以使用这些类来创建具体对象,并调用它们的方法:

public class Main {
    public static void main(String[] args) {
        AbstractClass classA = new ConcreteClassA();
        classA.templateMethod();

        AbstractClass classB = new ConcreteClassB();
        classB.templateMethod();
    }
}

 

模板模式应用场景

模板模式适用于那些具有固定算法流程,但是其中某些步骤的具体实现方式可能不同的场景。

模板模式应用场景包含如下:

1.各种框架和类库中广泛使用

例如:Java中的servlet中的doGet()和doPost()方法,Hibernate中的Template和Callback等。

2.排序算法

排序算法中的比较和交换操作的实现可能会有所不同,可以使用模板模式封装算法的流程。

3.数据库访问

数据库访问中的连接、查询、结果集处理等操作都可以使用模板模式。

4.消息处理

消息处理中的消息接收、解析、路由等操作都可以使用模板模式。

以上就是模板模式详解,更多设计模式请查看:Java设计模式:23种设计模式(万字图文全面总结)

作者简介

陈睿|mikechen,10年+大厂架构经验,BAT资深面试官,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

👇阅读更多mikechen架构文章👇

阿里架构 |双11秒杀 |分布式架构 |负载均衡 |单点登录 |微服务 |云原生 |高并发 |架构师

以上

关注作者「mikechen」公众号,获取更多技术干货!

后台回复架构,即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

评论交流
    说说你的看法