首页 > 其他分享 >模板模式:具体的步骤延迟到子类中实现

模板模式:具体的步骤延迟到子类中实现

时间:2023-06-09 15:34:26浏览次数:35  
标签:子类 void System protected println out 模板 延迟

模板模式是一种行为设计模式,它允许将算法的结构与实现分开,从而使得实现可以在不改变算法结构的情况下被重用。模板模式的核心思想是定义一个抽象基类,其中包含了算法的骨架,但是具体的步骤延迟到子类中去实现。这样一来,同一套算法的不同实现可以共享同一个基类代码,从而避免了代码的重复。简单来说,就是抽象类!

示例代码

abstract class Car {
    // 这里定义了汽车行驶的算法框架,包括启动、加速、减速和停止
    public void drive() {
        start();
        accelerate();
        brake();
        stop();
    }

    // 这些方法是算法的具体步骤,由子类去实现
    protected abstract void start();
    protected abstract void accelerate();
    protected abstract void brake();
    protected abstract void stop();
}

class ManualCar extends Car {
    protected void start() {
        System.out.println("手动挂挡启动");
    }

    protected void accelerate() {
        System.out.println("手动加速");
    }

    protected void brake() {
        System.out.println("手动刹车");
    }

    protected void stop() {
        System.out.println("手动停车");
    }
}

class AutomaticCar extends Car {
    protected void start() {
        System.out.println("自动启动");
    }

    protected void accelerate() {
        System.out.println("自动加速");
    }

    protected void brake() {
        System.out.println("自动刹车");
    }

    protected void stop() {
        System.out.println("自动停车");
    }
}

public class TemplatePatternExample {
    public static void main(String[] args) {
        Car manualCar = new ManualCar();
        manualCar.drive();

        Car automaticCar = new AutomaticCar();
        automaticCar.drive();
    }
}

Car是一个抽象基类,其中包含了汽车行驶的算法框架。具体的步骤由子类ManualCarAutomaticCar去实现。在 TemplatePatternExample类中,我们分别创建了一个手动挡汽车和一个自动挡汽车,并分别调用了它们的drive()方法。

通过模板模式,我们可以复用相同的算法框架,但是根据需要可以有不同的实现方式。例如,在上述示例中,我们可以轻松地添加更多类型的汽车,而不需要修改基类的代码。同时,由于具体的实现被延迟到子类中去实现,因此我们也可以避免代码重复造成的问题。

标签:子类,void,System,protected,println,out,模板,延迟
From: https://www.cnblogs.com/li053/p/17469338.html

相关文章

  • Quartz + SpringBoot 实现定时任务(多任务,多执行时间)代码模板(直接CV即可)
    一,什么是Quartzquartz是一款开源且丰富特性的Java任务调度库,用于实现任务调度和定时任务。它支持各种任务类型和灵活的配置选项,具备作业持久化、集群和分布式调度、错误处理和重试机制等功能。Quartz被广泛应用于各种应用程序中,提供可靠和灵活的任务调度解决方案。二,核心概念......
  • c++ 模板详解
    模板就是将类型进行参数化函数模板//函数模板的定义格式template<class形参名,class形参名...>返回值类型函数名(参数列表){函数体;}模板形参不能为空,并且函数模板中每一个类型参数在函数参数表中至少使用一次,只有这样才能推断出具体的类型template<classT>......
  • 深入浅出模板模式和动态代理
    模板模式模板模式是使用最频繁的设计模式之一,如果能正确的使用好模板模式,能使代码更加优雅,同时也便于后期维护和扩展。另外也是面试常问的设计模式之一。本次Chat分享的是易懂版模板模式,首先了解模板模式,然后会例举多个生活实例,再写一个案例,最后介绍Spring和Mybatis源码......
  • C++模板
    模板分为函数模板和类模板函数模板模板的语法建立一个通用函数,其函数返回值类型和形参类型可以不具体制定1template<typenameT>2voidmySwap(T&a,T&b){3Ttemp=a;4a=b;5b=temp;6}7intmain(){8inta=10;9intb......
  • 小程序模板语法样式与页面配置
    文章和代码已经归档至【Github仓库:<https://github.com/timerring/front-end-tutorial>】或者公众号【AIShareLab】回复小程序也可获取。小程序模板与配置WXML模板语法数据绑定在data中定义数据,在WXML中使用数据。使用Mustache{{}}语法:绑定内容绑定属性运算(三元运算、算术......
  • LightOJ - 1076 Get the Containers (二分)模板题
    TimeLimit: 2000MSMemoryLimit: 32768KB64bitIOFormat: %lld&%lluLightOJ-1076GettheContainersSubmit StatusDescriptionAconveyorbelthasanumberofvesselsofdifferentcapacitieseachfilledtobrimwithmilk.Themilkfromconveyorbeltis......
  • Django——模板
    Django——模板模板:django对模板文件没有特别大的限制,html,txt,没有类型的文件。django提供一种动态生成html页面的快捷方式,也就是模板。模板语言(DTL)1、配置模板pycharm创建django项目会自动将我们的模板templates配置好。#django的默认模板引擎;django也支持并且内......
  • Java爬虫通用模板它来了
    Java爬虫在实际应用中有很多场景,例如:数据挖掘和分析、搜索引擎、电商平台、数据更新、监控与预测等行业都需要爬虫借入,那么在实际爬虫中需要注意什么?又该怎么样快速实现爬虫?下面的文章值得看一看。单线程java爬虫以下是一个基本的Java爬虫模板,使用Jsoup库进行HTML解析和网络请求:im......
  • 深入了解 HTTP 请求和响应、表单处理和验证、URL 路由和重定向、Web 服务和 API 开发,
    在Web开发中,了解HTTP请求和响应、表单处理和验证、URL路由和重定向、Web服务和API开发,以及PHP模板引擎和视图是非常重要的。本文将深入探讨这些概念,并提供相关的代码示例。1.HTTP请求和响应HTTP(超文本传输协议)是用于在客户端和服务器之间传输数据的协议。在Web开发中......
  • Java爬虫通用模板它来了
    Java爬虫在实际应用中有很多场景,例如:数据挖掘和分析、搜索引擎、电商平台、数据更新、监控与预测等行业都需要爬虫借入,那么在实际爬虫中需要注意什么?又该怎么样快速实现爬虫?下面的文章值得看一看。单线程java爬虫以下是一个基本的Java爬虫模板,使用Jsoup库进行HTML解析和网络请......