设计模式学习笔记十三:模板方法模式

Origin2018(汉化版)在使用科学计数法的时候如何将坐标刻度的0.0改成0 文章目录1 问题2 解决方法 1 问题 先看下面这张图,当我使用科学计数法时,纵坐标出现了0.0的字样,这样看起来很不美观。有些期刊还会有要求,不能出现0.0的格式。 图1 那么该怎么将它改成0呢?首先让我们尝试着用Origin自带的属性,看看能不能设置。 2 解决方法 解决方法一: step1: 双击坐标轴,打开坐标轴属性设置。 step2: 在刻度线标签选项中设置左轴的显示 图2 会发现,按照图2的方式改好之后,其它的小数位也全没了,如果但是有些数字就被覆盖了,这显然不是我 阅读详情

设计模式学习笔记十三:模板方法模式

介绍

模板方法(TEMPLATE METHOD)模式,属于类行为型模式,
意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TEMPLATE METHOD使得子类
可以不改变一个算法的结构即可重定义该算法的某些特定步骤。(本段摘自《GoF设计模式》 5.10)。
模板方法有几个要素:

  • 算法骨架:模板执行方法,防止子类更改流程,定义为不可override,即final;
  • 抽象方法:在子类实现的方法;
  • 钩子方法:在模板类中提供默认方法,子类不是必须要实现;

适用场景

算法骨架稳定,部分细节需要自定义。

UML结构图:

Template

场景模拟

侍寝:帝时弄骰而定亦或钦点,内侍背佳丽入房,事毕,问留否。留则罢,不留则去龙元。

代码实现:

1.模板类

/**
 * 模板类
 */
public abstract class AbstractSleeping {
    final void execute() {
        String concubine = choiceConcubine();
        getConcubine(concubine);
        try {
            doSleep();
        } catch (InterruptedException e) {
            System.out.println("帝偶感风寒……");
        }
        if (wantChildernHook()) {
            doWant();
        }
    }

    protected void doWant() {
        System.out.println("帝曰: 留");
    }

    protected boolean wantChildernHook() {
        return true;
    }

    protected void doSleep() throws InterruptedException {
        // 内涵
        Thread.sleep(10L);
        System.out.println("事毕……");
    }


    protected void getConcubine(String concubine) {
        System.out.println("内侍背妃子" + concubine + "入房……");
    }

    /**
     * 选妃子
     * @return
     */
    protected abstract String choiceConcubine();
}

2.模板实现类

/**
 * 翻牌选妃
 */
public class RandomSleeping extends AbstractSleeping {
    /**
     * 翻牌选妃子
     * @return
     */
    @Override
    protected String choiceConcubine() {
        String[] concubines = new String[] {"娴·乌拉那拉宜修", "沈眉庄", "安陵容", "富察贵人", "方淳意", "余莺儿", "瓜尔佳文鸯", "滟·叶澜依"};
        return concubines[new Random().nextInt(concubines.length)];
    }

    /**
     * 帝心难测
     * @return
     */
    protected boolean wantChildernHook() {
        return new Random().nextBoolean();
    }
}

/**
 * 万千宠爱于一身
 */
public class SpecialSleeping extends  AbstractSleeping {
    /**
     * 选妃子
     *
     * @return
     */
    @Override
    protected String choiceConcubine() {
        return "甄嬛";
    }
}

3.Run

public class Run {
    public static void main(String[] args) {
        new RandomSleeping().execute();
        System.out.println();
        new SpecialSleeping().execute();
    }
}

输出

内侍背妃子滟·叶澜依入房……
事毕……
帝曰: 留

内侍背妃子甄嬛入房……
事毕……
帝曰: 留

策略模式与模板方法模式的区别

  • 策略模式的算法是可以动态指定的,模板方法模式的算法是在模板类完成的,只是其中的变化方法由子类去生成。
  • 策略模式是对象行为型模式,模板方法模式是类行为型模式。
  • 策略模式是接口实现,即组合。模板方式模式是继承实现。OO原则:多用组合,少用继承。
EMC基础知识总结 电磁干扰(Electromagnetic Interference),简称EMI,有和两种。传导干扰主要是电子设备产生的干扰信号通过导电介质或公共电源线互相产生干扰;辐射干扰是指电子设备产生的干扰信号通过空间耦合把干扰信号传给另一个电网络或电子设备。 阅读详情

相关推荐

Shopee 虾皮API接口:商品详情采集的实践

随着电商行业的蓬勃发展,数据采集和分析在商业决策中扮演着越来越重要的角色。Shopee作为东南亚领先的电商平台,拥有大量的商品数据。通过Shopee的API接口,我们可以方便地获取商品详情,为数据分析和市场研究提供有力支持。本文将介绍如何使用Shopee API接口采集商品详情,并分享一些实践技巧。提供了丰富的数据接口,包括商品详情、店铺信息、订单数据等。通过API接口,开发者可以轻松地获取Shopee平台上的数据,进行进一步的处理和分析。Shopee API接口:商品详情采集的实践与技巧。

An4480的博客 1889

学习笔记【23种设计模式-第十三节:Template Method Pattern模板方法模式】

Template Method Pattern模板方法模式 简述: 模板方法模式,又叫模板模式,在一个抽象类公开定义了执行他的方法的模板,它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。 简单说,模板方法模式定义了一个操作中的算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构,就可以重定义该算法的某些特定的步骤。 属于行为型模式。 角色 AbstractClass抽象类,类中实现了模板方法,定义了算法的股价,具体子类需要去实现,其他抽象方法operation2、3

qq_53273362的博客 216

UE5新手必看:3种UI定位方法实战(含蓝图配置截图)

本文为UE5新手详细解析了三种核心UI定位方法:屏幕空间、场景空间和世界空间。通过实战蓝图配置与控件操作,指导开发者如何根据HUD、角色血条、3D物体标记等不同应用场景,正确选择并配置UI的定位方式,以实现清晰的信息传递与沉浸式体验。

weixin_29018815的博客 474

设计模式学习笔记(C++实现)(二十三)--模板方法模式

1.模板方法模式简介 英文名称 Template Method 主要目的 该模式定义一个操作中的算法的基本框架,而将一些步骤延迟到子类中进行。模板方法模式可以使得子类在不改变算法框架的情况下,重定义该算法的某些特定步骤。 使用场景 1.一次性实现一个算法不变的部分,并将可变的部分留给子类来实现; 2.各个子类的公共行为被提取出来并集中到一个公共父类中进行,从而减少代码重复; 3.控制...

以文会友 389

解决UE5像素流三大痛点:鼠标锁定/双光标/自动播放(附app.js魔改指南)

本文针对UE5像素流服务在实际应用中常见的鼠标锁定、双光标和自动播放三大交互痛点,提供了深入的技术分析和解决方案。通过详细解析app.js源码,指导开发者如何修改控制方案、修复光标显示以及实现静音自动播放,旨在提升Pixel Streaming应用的用户体验与专业度。

weixin_28025327的博客 386

【YOLOv11多模态涨点改进】独家创新首发| TGRS 2026 |引入 CIFusion 通道交互融合模块,通过跨特征交互机制强化目标区域响应,适合多模态融合目标检测,小目标检测高效涨点

🔥本文提出了一种改进YOLOv11多模态目标检测模型的方法,通过引入CIFusion通道交互融合模块来提升RGB与红外特征融合效果。CIF模块采用通道级自适应交互机制,根据全局上下文动态分配不同模态通道的重要性,实现跨模态特征交互与互补信息融合。相比传统拼接或加权融合方式,CIF能够增强目标区域响应,抑制背景噪声,提高小目标和低对比度目标的检测性能。实验表明,该方法在DroneVehicle等数据集上显著提升了检测精度。论文还详细介绍了CIF模块的结构原理、实现代码及模型配置方法。

Ai缝合怪、助力小伙伴高效发论文 187

JAVA设计模式大总结(十三)--- b站尚硅谷设计模式之 模板模式(模板方法) 图解+小项目的代码实现 整理(超详)

项目引入: 一.模板方法模式: 模板方法解决豆浆制作: 模板方法模式的钩子方法: 小结: 声明: 1.此文章仅为学习笔记,不做其他任何用途,侵权请联系删除。 2.需要看其他设计模式则在我的设计模式专栏中查看即可 ...

XJ200012的博客 584

光学测量仿真软件:Zygo_(12).Zygo软件的用户界面与操作指南

Zygo软件支持用户自定义工具和插件,以扩展软件的功能和适应特定的仿真需求。编写脚本使用Python或其他支持的脚本语言编写自定义工具的脚本。例如,编写一个脚本来计算光束的衍射效率。# 示例脚本:计算光束的衍射效率 import zygo # 导入Zygo软件的API def calculate_diffraction_efficiency(wavelength , grating_period , angle) : """计算光束的衍射效率:param wavelength: 光源波长(单位:米)

kkchenjj的博客 1669

步步为营 .NET 设计模式学习笔记 一、开篇(设计模式之泡妞二十三招)

园子里讲设计模式的太多了,最近我也在学设计模式,把我自己练的一些代码整理下,写个.NET设计模式学习笔记来让自己在设计模式的功底更深一层。 记得金庸小说里风清扬教令狐冲的时候,说过独孤九剑的总纲,无招胜有招,其实设计模式中也有这种总纲,那便是 ?Identify the aspects of your application that vary and separate them from wh...

weixin_34019929的博客 276

GEE:基于自定义的年度时序数据集进行LandTrendr变化检测

本文介绍了使用年度时序数据进行LandTrendr变化检测的方法,包括核心函数调用、参数设置和结果可视化。通过筛选参数(年份、变化幅度和持续时间)对结果进行过滤,输出变化年份、变化幅度和持续时间。代码提供了完整的处理流程,包括数据输入、LandTrendr算法运行、结果筛选与可视化,并支持结果导出。适用于基于Google Earth Engine平台的地表变化检测分析。

养乐多的博客 752

GEE:连续变化检测 CCD 第一步(导出ee.Algorithms.TemporalSegmentation.Ccdc函数的结果)

连续变化检测与分类(Continuous Change Detection and Classification, CCDC)主要有两个组件,一个连续变化检测 CCD,另外一个分类。在 Google Earth Engine (GEE)平台上进行 CCD 时间序列变化检测的时候,为了防止内存超限问题,将代码分为2阶段执行。第一阶段是运行 `ee.Algorithms.TemporalSegmentation.Ccdc` 函数,本文将详细介绍 CCD 的第一阶段的代码。

养乐多的博客 2497

sheng的学习笔记-设计模式-模板模式

流程图 模板方法(Template Method)模式的定义如下:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式。 在面向对象系统的分析与设计过程中经常会遇到这样一种情况:对于某一个业务逻辑(算法实现) 在不同的对象中有不同的细节实现, 但是逻辑(算法) 的框架(或通用的应用算法)是相同的。 Template 提供了这种情况的一个实现框架。Template 模式是采用继承的方式实现这一点:将逻辑..

coldstarry的专栏 187

uniapp | 基于高德地图实现位置选择功能(安卓端)

在uni-app项目中实现地图位置选择功能的解决方案。由于uni.chooseLocation功能受限,采用高德地图API自主开发。系统由父组件poiMap.vue(负责展示和跳转)和子组件poiBox.vue(核心地图逻辑)构成,通过父子组件通信传递位置数据。关键技术包括:1)使用AMapLoader动态加载地图SDK;2)集成PositionPicker实现拖拽选点;3)异步加载AMapUI插件;4)通过事件监听获取位置详情(地址/经纬度)。

大胆尝试,小心实践 735

设计模式学习笔记——23种设计模式

设计模式分为三大类:创建型模式 共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式 共七种:适配器模式、桥接模式、组合模式、装饰器模式、外观模式、享元模式、代理模式。行为型模式 共十一种:责任链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式、访问者模式。***********结构型模式***********意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。 优点:缺点

weixin_52888643的博客 612

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

java23种设计模式个人整理_GoF设计模式合集

1 概述 这篇文章是对GoF23种设计模式+1种非GoF模式的合集,由笔者自己的笔记整理而来,每个模式都详细描述了步骤,角色等,以及使用Java实现的具体的例子,下面是目录:基础设计模式概述UML基础创建型模式单例模式简单工厂模式(非GoF模式)工厂方法模式抽象工厂模式原型模式建造者模式结构型模式适配器模式桥接模式组合模式装饰模式外观模式享元模式代理模式行为型模式职责链模式命令模式解释器模式迭代器...

weixin_39669133的博客 105

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

JAVA设计模式 学习笔记 重点突出详细

众所周知 一共GOF二十三种设计模型 今天面试被拷打了单例模式 于是乎想看看自己是否在这些方面会有遗漏 就写个博客总结一下。

weixin_49582192的博客 1197

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

设计模式学习笔记(目录篇)

设计模式学习笔记(目录篇) 为了方便查看,特此将设计模式学习笔记系列单独做一个目录。   1   设计模式学习笔记(一:命令模式) 2   设计模式学习笔记(二:观察者模式) 3   设计模式学习笔记(三:装饰模式) 4   设计模式学习笔记(四:策略模式) 5   设计模式学习笔记(五:适配器模式) 6   设计模式学习笔记(六:责任链模式) 7   设计模式学习笔记(七:外观...

weixin_34183910的博客 133

《Head First设计模式》读书笔记

目录 一、设计模式入门与策略模式 二、观察者模式 三、装饰者模式 四、工厂模式 五、单件模式 六、命令模式 七、适配器与外观模式 八、模板方法模式 九、迭代器与组合模式 十、状态模式 十一、代理模式 十二、复合模式 十三、与设计模式相处 十四、其他模式 一、设计模式入门与策略模式 1.使用模式最好的方式是:“把模式装进脑子里,然后在你的设计和已有的应用中,寻找何处可以使用它们。” 2.软件开发的一个不变真理:改变 3.第一个设计原则:分离需要变化的代码和不需要变化的代

weixin_52847003的博客 1013

Java设计模式学习笔记 --- 万字总结归纳

本书是一本关于设计模式的实用指南。设计模式是面向对象编程的基石,它们为解决常见的软件设计问题提供了经验丰富的解决方案。通过深入浅出的示例和清晰的代码,本书引导读者掌握工厂模式、单例模式、观察者模式、策略模式等关键设计模式。 每个模式都经过仔细解释,包括问题、解决方案、示例代码和类图。这有助于读者理解模式的核心思想,并学会在实际项目中应用它们。无论您是初学者还是经验丰富的开发者,本书都将成为您的设计模式宝典,提高软件的可维护性和可扩展性。

qq_45786626的博客 712

Java架构师进阶必备24种设计模式学习资源,速速看过来!

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的

2401_83916355的博客 427

Java架构师进阶必备24种设计模式学习资源,速速看过来,快点来白嫖

七、门面模式【Facade Pattern】 八、适配器模式【Adapter Pattern】 九、模板方法模式【Template Method Pattern】 十、建造者模式【Builder Pattern】 十一、桥梁模式【Bridge Pattern】 十二、命令模式【Command Pattern】 十三、装饰模式【Decorator Pattern】 十四、 迭代器模式【Iterator Pattern】 十五、组合模式【Composite Pattern】 十六、观察者模式【

m0_60732427的博客 143

Java23种设计模式学习

转载自https://www.cnblogs.com/cxxjohnson/p/6403835.html Java23种设计模式学习笔记【目录总贴】 创建型模式:关注对象的创建过程   1、单例​模式:保证一个类只有一个实例,并且提供一个访问该实例的全局访问点 主要: 饿汉式(线程安全,调用效率高,但是不能延时加载) 懒汉式(线程安全,调用...

吾道不孤也 162

设计模式理解

原文链接: 设计模式C++学习笔记之一(Strategy策略模式) 设计模式C++学习笔记之二(Proxy代理模式) 设计模式C++学习笔记之三(Singleton单例模式) 设计模式C++学习笔记之四(Multition多例模式) 设计模式C++学习笔记之五(Factory Method工厂方法模式) 设计模式C++学习笔记之六(Facade门面模式) 设计模式C++学习笔记之...

weixin_34034670的博客 124
上一篇: 设计模式学习笔记十二:访问者模式
下一篇: 设计模式学习笔记十四:适配器模式
七郎
博客等级 码龄14年 31粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值