深入浅出模板方法模式

简介: 深入浅出模板方法模式

1 概念

在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。

2 应用场景

  • 有多个子类共有的方法,且逻辑相同。
  • 重要的、复杂的方法,可以考虑作为模板方法。

3 实际使用案例

3.1 场景分析

一个国际上市公司的老板Tom经常去不同的国家谈合作,邮件中需要进行自我介绍,在不同的国家需要不同的语言,但是介绍的模板都是相同的,主需要更换不同语言的名字就可以实现自我介绍的模板,因此我们设计一个签名的抽闲,几个不同的语言进行具体的实现,实例化时只需要声明代表不同语言的实现类,设置好不同语言的签名就可以简单的进行自我介绍。

3.2 类图

image.png

3.3 代码实现

Signature抽象类

/**
 * @desc: 签名抽象类
 * @author: YanMingXin
 * @create: 2021/8/28-22:08
 **/
public abstract class Signature {

    public String name;

    /**
     * 打开笔
     */
    public abstract void open();

    /**
     * 关闭笔
     */
    public abstract void close();

    /**
     * 签名的内容
     */
    public abstract void print();

    /**
     * 进行显示
     */
    public void display() {
        open();
        print();
        close();
    }
}

ChineseSignature类

/**
 * @desc: 中文签名
 * @author: YanMingXin
 * @create: 2021/8/28-22:08
 **/
public class ChineseSignature extends Signature{

    public ChineseSignature(String name){
        this.name=name;
    }

    @Override
    public void open() {
        System.out.print("我的中文名字是 : ");
    }

    @Override
    public void close() {
        System.out.print("。");
    }

    @Override
    public void print() {
        System.out.print(name);
    }
}

EnglishSignature类

/**
 * @desc: 英文签名
 * @author: YanMingXin
 * @create: 2021/8/28-22:08
 **/
public class EnglishSignature extends Signature{

    public EnglishSignature(String name) {
        this.name=name;
    }

    @Override
    public void open() {
        System.out.print("My English is : ");
    }

    @Override
    public void close() {
        System.out.print(".");
    }

    @Override
    public void print() {
        System.out.print(name);
    }
}

RussianSignature类

/**
 * @desc: 俄文签名
 * @author: YanMingXin
 * @create: 2021/8/28-22:09
 **/
public class RussianSignature extends Signature{

    public RussianSignature(String name){
        this.name=name;
    }

    @Override
    public void open() {
        System.out.print("Моё русское имя : ");
    }

    @Override
    public void close() {
        System.out.print(".");
    }

    @Override
    public void print() {
        System.out.print(name);
    }
}

测试类:

/**
 * @desc: 模板方法模式测试
 * @author: YanMingXin
 * @create: 2021/8/28-22:06
 **/
public class MyTemplate {

    public static void main(String[] args) {
        Signature signature = new ChineseSignature("汤姆");
        signature.display();
        System.out.println();
        signature = new EnglishSignature("Tom");
        signature.display();
        System.out.println();
        signature = new RussianSignature("Том");
        signature.display();
    }
}

测试结果:

image.png

相关文章
|
7月前
|
设计模式
深入浅出装饰者模式
深入浅出装饰者模式
36 2
|
7月前
|
设计模式 Java
深入浅出职责链模式
深入浅出职责链模式
58 0
|
7月前
|
Java
深入浅出适配器模式
深入浅出适配器模式
55 0
|
7月前
|
设计模式 SQL 算法
【设计模式系列笔记】模板方法模式
模板方法模式是一种行为设计模式,它定义了一个算法的骨架,并允许子类在不改变该算法结构的情况下重新定义算法的某些步骤。这种模式属于行为型模式,它通过将算法的不同部分封装在不同的方法中,从而使子类能够在不改变算法结构的前提下定制算法的某些步骤。
67 0
|
设计模式 安全 Java
深入浅出设计模式 - 责任链模式
深入浅出设计模式 - 责任链模式
9409 1
深入浅出设计模式 - 责任链模式
|
设计模式 算法 安全
深入浅出设计模式 - 策略模式
深入浅出设计模式 - 策略模式
132 0
深入浅出设计模式 - 策略模式
|
设计模式 存储 安全
深入浅出设计模式 - 备忘录模式
深入浅出设计模式 - 备忘录模式
116 1
深入浅出设计模式 - 备忘录模式
|
设计模式 安全 Java
深入浅出设计模式 - 迭代器模式
深入浅出设计模式 - 迭代器模式
85 1
深入浅出设计模式 - 迭代器模式
|
设计模式 算法 安全
深入浅出设计模式 - 模板方法模式
深入浅出设计模式 - 模板方法模式
109 0
深入浅出设计模式 - 模板方法模式
|
设计模式 XML JSON
深入浅出设计模式 - 解释器模式
深入浅出设计模式 - 解释器模式
216 0
深入浅出设计模式 - 解释器模式