深入浅出模板方法模式

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

1 概念

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

2 应用场景

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

3 实际使用案例

3.1 场景分析

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

3.2 类图

网络异常,图片无法展示
|

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();
    }
}
复制代码

测试结果:

网络异常,图片无法展示
|


相关文章
|
7天前
|
人工智能 运维 安全
|
5天前
|
人工智能 异构计算
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
|
6天前
|
机器学习/深度学习 人工智能 自然语言处理
B站开源IndexTTS2,用极致表现力颠覆听觉体验
在语音合成技术不断演进的背景下,早期版本的IndexTTS虽然在多场景应用中展现出良好的表现,但在情感表达的细腻度与时长控制的精准性方面仍存在提升空间。为了解决这些问题,并进一步推动零样本语音合成在实际场景中的落地能力,B站语音团队对模型架构与训练策略进行了深度优化,推出了全新一代语音合成模型——IndexTTS2 。
607 21
|
12天前
|
人工智能 JavaScript 测试技术
Qwen3-Coder入门教程|10分钟搞定安装配置
Qwen3-Coder 挑战赛简介:无论你是编程小白还是办公达人,都能通过本教程快速上手 Qwen-Code CLI,利用 AI 轻松实现代码编写、文档处理等任务。内容涵盖 API 配置、CLI 安装及多种实用案例,助你提升效率,体验智能编码的乐趣。
970 110
|
6天前
|
人工智能 测试技术 API
智能体(AI Agent)搭建全攻略:从概念到实践的终极指南
在人工智能浪潮中,智能体(AI Agent)正成为变革性技术。它们具备自主决策、环境感知、任务执行等能力,广泛应用于日常任务与商业流程。本文详解智能体概念、架构及七步搭建指南,助你打造专属智能体,迎接智能自动化新时代。