一文了解编程领域的模版

简介: 一文了解编程领域的模版

🍊在编程领域,模板是一种代码片段,它可以被重复使用,并允许您在保持代码的基本结构不变的情况下,根据需要调整其中的内容。模板通常在构建大型程序或开发一类相关程序时非常有用,以减少代码冗余并提高代码可读性。

      🍊模板可以通过多种方式实现,具体取决于使用的编程语言。在 C++ 中,可以使用模板来实现泛型编程。在 Java 中,可以使用泛型来实现类似模板的功能。此外,许多编程语言都提供了模板引擎,可以生成静态 HTML 或动态网页。

模版含义

在编程领域中,模板可以有多种含义。以下是最常见的几种:

泛型:泛型是指在一个类、接口或函数的定义中使用泛型,以提供对多种类型的支持。泛型模板可以在编译时为不同类型生成不同的代码版本,从而提供灵活的代码表示。

模板引擎:模板引擎是一种生成静态 HTML 或动态网页的工具。它通常使用特定的语法,将数据与模板中的代码结合,以生成最终的网页。

      模板的使用与实现方式因编程语言而异,但所有编程语言都提供了某种形式的模板来支持代码的重复使用和灵活性。

代码模版

      代码模板是指在编程过程中,预先编写好的一份代码,并通过一些技巧,将其中的特定部分替换为需要的信息,从而快速生成符合需求的代码。

      代码模板常用于节省编写重复代码的时间,以及保证代码质量和一致性。

以 Java 为例,下面是一个简单的代码模板文件(Template.txt):

public class ${ClassName} {
    public ${ReturnType} ${MethodName}(${Parameters} ) {
        // 业务逻辑code
        ${generalEditorCode}
    }
}

73d8c9be8b2a4960a39693770de0ac9a.png

可以通过以下步骤使用此模板:

  1. 将模板代码复制到一个文件中,例如Template.txt。
  2. 读取模版文件。
  3. 将模板中的占位符替换为具体的值,如ClassName、ReturnType、MethodName和Parameters。
  4. 保存到新文件中(如MyApplication.java)。

       根据需要,在代码中对方法进行修改和扩展。

以下代码来实现读取模板并根据模板生成代码:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class GenerateCode {
    public static void main(String[] args) throws IOException {
      public class GenerateCode {
    public static void main(String[] args) throws IOException {
        //替换模版的信息(根据需要,玩转模版)
        String className = "MyApplication";
        String returnType = "void";
        String methodName = "myMethod";
        String parameters = "int a, String b";
        String generalEditorCode = "System.out.println(a + b);";
        // 读取模板
        BufferedReader br = new BufferedReader(new FileReader("./file/Template.txt"));
        StringBuilder sb = new StringBuilder();
        String line;
        while ((line = br.readLine()) != null) {
            sb.append(line).append("\n");
        }
        br.close();
        // 替换模版中占位符
        String template = sb.toString();
        template = template.replace("${ClassName}", className);
        template = template.replace("${ReturnType}", returnType);
        template = template.replace("${MethodName}", methodName);
        template = template.replace("${Parameters}", parameters);
        template = template.replace("${GeneralEditorCode}", generalEditorCode);
        // 写入新文件
        FileWriter fw = new FileWriter("./file/" + className + ".java");
        fw.write(template);
        fw.close();
    }
}
    }
}

以我的视角为例,运行代码后会生成一个新的.java文件

73d8c9be8b2a4960a39693770de0ac9a.png

泛型

下面是一个简单的泛型类,它可以存储任意类型的数据:

public class Box<T> {
   private T t;
   public void add(T t) {
      this.t = t;
   }
   public T get() {
      return t;
   }
}
public class Main {
   public static void main(String[] args) {
      Box<Integer> integerBox = new Box<Integer>();
      Box<String> stringBox = new Box<String>();
      integerBox.add(10);
      stringBox.add("Hello World");
      System.out.println("Integer Value : " + integerBox.get());
      System.out.println("String Value : " + stringBox.get());
   }
}

在这个例子中,我们定义了一个名为 Box 的泛型类,并使用了 add 和 get 方法在其中存储和检索值。在创建 Box 对象时,您可以在括号中指定数据类型,如 Integer 或 String。

模版引擎

      模板引擎是一种生成动态内容的工具,常用于 Web 开发中。模板引擎允许用户创建一个静态的 HTML 页面,其中一些内容是可以动态生成的。通过在 HTML 模板中插入占位符,引擎可以根据需要在运行时自动替换为实际的内容。

以下是 Java 中使用 FreeMarker 作为模板引擎的示例代码:

  1. 创建 pom.xml,添加 FreeMarker 依赖
<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.30</version>
</dependency>
  1. Java代码实现
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;
import java.util.HashMap;
import java.util.Map;
/**
* @author 
* @date 2023年02月03日 14:43
*/
public class TemplatEengine {
   public static void main(String[] args) {
       // 定义模板(模版可以存在文件系统、DB或者云端存储等)
       String template = "<html>\n" +
               "    <head>\n" +
               "        <title>${title}</title>\n" +
               "    </head>\n" +
               "    <body>\n" +
               "        <h1>${header}</h1>\n" +
               "        <p>${message}</p>\n" +
               "    </body>\n" +
               "</html>";
       // 创建模板配置
       Configuration configuration = new Configuration();
       // 将模板数据存入数据模型
       Map<String, Object> dataModel = new HashMap<>();
       dataModel.put("title", "My Page");
       dataModel.put("header", "Welcome");
       dataModel.put("message", "Hello, World!");
       // 生成模板
       StringWriter writer = new StringWriter();
       try {
           Template t = new Template("template", new StringReader(template), configuration);
           t.process(dataModel, writer);
           System.out.println(writer.toString());
       } catch (TemplateException | IOException e) {
           e.printStackTrace();
       }
   }
}

该代码创建了一个简单的 HTML 模板,其中包含三个占位符:t i t l e 、 {title}、title、{header} 和 ${message}。接下来,代码将数据模型存入数据字典,然后使用 FreeMarker 模板引擎生成最终的 HTML。

运行结果

73d8c9be8b2a4960a39693770de0ac9a.png

小结

      在编程领域的一些场景下,模板是作为特定类型项目或任务的起点的蓝图或表单。在编程环境中,模板通常用于生成可针对特定用例进行定制的可重用代码。

      有几种类型的模板,包括代码模板、通用模板和模板引擎。代码模板为一段代码提供了一个基本结构,可以用作起点,而通用模板允许创建可以处理一系列数据类型的灵活代码。模板引擎是一种更高级的模板形式,允许创建和呈现动态 HTML 模板。

      总的来说,这些模版都可以提高效率,减少重复的工作量,可以给研发提供额外的时间来关注其他事情,如稳定性、代码优化、重构等。⚠️但是,了解使用模板的限制和权衡很重要,因为模板也可能会增加代码的复杂性并使其更难调试。

相关文章
|
7月前
|
小程序
小程序模版|保险小程序模版源码
小程序模版|保险小程序模版源码
154 0
|
7月前
|
算法 安全 编译器
【C++】从零开始认识泛型编程 — 模版
泛型编程是C++中十分关键的一环,泛型编程是C++编程中的一项强大功能,它通过模板提供了类型无关的代码,使得C++程序可以更加灵活和高效,极大的简便了我们编写代码的工作量。
82 3
|
2月前
|
Unix 编译器 Linux
C++之模版进阶篇(下)
C++之模版进阶篇(下)
49 0
|
2月前
|
编译器 C++
C++之模版进阶篇(上)
C++之模版进阶篇(上)
19 0
|
2月前
|
编译器 C语言 C++
C++之模版初阶
C++之模版初阶
16 0
|
算法 编译器 C++
C++模版基础
C++模版基础
51 0
|
7月前
|
程序员 C++
C++语言模板学习应用案例
C++模板实现通用代码,以适应多种数据类型。示例展示了一个计算两数之和的模板函数`add&lt;T&gt;`,可处理整数和浮点数。在`main`函数中,展示了对`add`模板的调用,分别计算整数和浮点数的和,输出结果。
55 2
|
7月前
|
机器学习/深度学习 存储 算法
C++ 模版函数介绍:介绍模版函数的基本概念、用法和作用
C++ 模版函数介绍:介绍模版函数的基本概念、用法和作用
75 1
|
7月前
|
编译器 C++
C++模版初阶
C++模版初阶
35 2
|
7月前
|
编译器 C语言 C++
【C++初阶(九)】C++模版(初阶)----函数模版与类模版
【C++初阶(九)】C++模版(初阶)----函数模版与类模版
40 0