设计模式-模板方法

设计模式-模板方法

模板方法模式(Template Method Pattern)是一种行为设计模式,它在父类中定义了一个算法的框架,允许子类在不改变结构的情况下重写算法中的某些步骤。模板方法封装了算法的骨架,而将一些具体实现步骤延迟到子类中完成。

模板方法模式是通过把不变的行为搬迁到超类,去除字类中的重复代码来提现它的优势。

代码结构图:

在这里插入图片描述

模板方法实现代码:

/**
 * 模板方法
 */
public abstract class AbstractClass {
   
    public void templateMethod(){
   
        this.primitiveOperation1();
        this.primitiveOperation2();
    }

    public abstract void primitiveOperation1();

    public abstract void primitiveOperation2();
}
/**
 * 模板方法具体类A
 */
public class ConcreteClassA extends AbstractClass{
   
    @Override
    public void primitiveOperation1() {
   
        System.out.println("具体A实现1方法");
    }

    @Override
    public void primitiveOperation2() {
   
        System.out.println("具体A实现2方法");
    }
}
/**
 * 模板方法具体类B
 */
public class ConcreteClassB extends AbstractClass{
   
    @Override
    public void primitiveOperation1() {
   
        System.out.println("具体B实现1方法");
    }

    @Override
    public void primitiveOperation2() {
   
        System.out.println("具体B实现2方法");
    }
}
/**
 * 模板方法客户端
 */
public class TemplateDemo {
   
    public static void main(String[] args) {
   
        // 执行A具体实现方法
        new ConcreteClassA().templateMethod();

        System.out.println("=== === === === ===");

        // 执行B具体实现方法
        new ConcreteClassB().templateMethod();


    }
}

/ 执行B具体实现方法
new ConcreteClassB().templateMethod();

}

}


相关推荐

  1. 设计模式-模板方法模式

    2024-01-18 15:38:04       43 阅读
  2. 设计模式模板方法模式

    2024-01-18 15:38:04       27 阅读
  3. 设计模式——模板方法模式

    2024-01-18 15:38:04       36 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-18 15:38:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-18 15:38:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-18 15:38:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-18 15:38:04       20 阅读

热门阅读

  1. STM32-串口解析框架

    2024-01-18 15:38:04       31 阅读
  2. 消息队列之RabbitMQ介绍

    2024-01-18 15:38:04       23 阅读
  3. 蓝桥杯《蚂蚁感冒》

    2024-01-18 15:38:04       36 阅读
  4. 《设计模式的艺术》笔记 - 适配器模式

    2024-01-18 15:38:04       36 阅读
  5. docker使用指南&疑难杂症

    2024-01-18 15:38:04       42 阅读
  6. SQL语句详解四-DQL(数据查询语言-多表查询二)

    2024-01-18 15:38:04       38 阅读
  7. SSH远程登录详解

    2024-01-18 15:38:04       31 阅读
  8. k8s和knative的区别与联系

    2024-01-18 15:38:04       35 阅读
  9. 什么是PHP中的事务隔离级别?

    2024-01-18 15:38:04       35 阅读