8-Template method

An application framework allows you to inherit from a class or set of classes and create a new application, reusing most of the code in the existing classes and overriding one or more methods in order to customize the application to your needs. A fundamental concept in the application framework is the Template Method which is typically hidden beneath the covers and drives the application by calling the various methods in the base class (some of which you have overridden in order to create the application).

For example, whenever you create an applet you’re using an application framework: you inherit from JApplet and then override init( ) . The applet mechanism (which is a Template Method ) does the rest by drawing the screen, handling the event loop, resizing, etc.

An important characteristic of the Template Method is that it is defined in the base class and cannot be changed. It’s sometimes a private method but it’s virtually always final . It calls other base-class methods (the ones you override) in order to do its job, but it is usually called only as part of an initialization process (and thus the client programmer isn’t necessarily able to call it directly).

//: templatemethod:TemplateMethod.java

// Simple demonstration of Template Method.

package templatemethod;

import junit.framework.*;

 

abstract class ApplicationFramework {

  public ApplicationFramework() {

    templateMethod(); // Dangerous!

  }

  abstract void customize1();

  abstract void customize2();

  final void templateMethod() {

    for(int i = 0; i < 5; i++) {

      customize1();

      customize2();

    }

  }

}

 

// Create a new "application":

class MyApp extends ApplicationFramework {

  void customize1() {

    System.out.print("Hello ");

  }

  void customize2() {

    System.out.println("World!");

  }

}

 

public class TemplateMethod extends TestCase  {

  MyApp app = new MyApp();

  public void test() {

    // The MyApp constructor does all the work.

    // This just makes sure it will complete

    // without throwing an exception.

  }

  public static void main(String args[]) {

    junit.textui.TestRunner.run(TemplateMethod.class);

  }

} ///:~

The base-class constructor is responsible for performing the necessary initialization and then starting the “engine” (the template method) that runs the application (in a GUI application, this “engine” would be the main event loop). The client programmer simply provides definitions for customize1( ) and customize2( ) and the “application” is ready to run.

 

//上面的例子比较简单,很容易就能看明白,在时间当中可就没有那么容易。主要是体现在抽象函数的复杂性。我接触过的和能想到的实际应用就是:

<1> Servlet开发,只用你extends HttpServlet ,覆盖其中的doGet(),doPost()方法就好了。具体servlet的调用是由web服务器来完成的(服务器应用Template Method 模式隐藏了具体的数据连接、传输的过程,比如Socket连接等,这个只要稍微看看Tomcate的初始源码就可以了解了),只要你在自己实现函数中,将业务处理部分添加,然后,将实现类在web.xml中配置好就OK了,这个是一个很典型的应用;

<2> 此外就是JDBC中,jdbcTemplate开源应用中,应用的Template Method模式,就连接数据库,或者是启用数据源的应用部分封装在模板类中,而将具体的查询类接口通过DAO设计模式,暴露出来,同样,这个应用也是很典型的!

 

APB Timer验证环境搭建——学习笔记(1) 以下为个人学习笔记,如有疏漏,请大家指正补充~~APB Timer是一个简单的下行计数器,包括一个32位计数器和一组比较器,可以实现多种计时功能。包括生成一次性中断或者定时中断。 阅读详情

相关推荐

创建可视化机房

(3)窗户位置创建好以后需要对窗户的墙面镂空位置进行修补,具体操作为,选中镂空位置的顶点(这里必须是选择一个平面的顶点,不要跨平面选择),实际操作如下图:选择点以后,鼠标右键,选择【从顶点创建边/面】,或者按F键,随后对其他镂空位置进行相同操作;(2)将【物体模式】修改为【编辑模式】,选中-x对应面的所有顶点,移动顶点位置,其他放小调整按照同理,找到选中对应面的所有顶点,移动位置即可;调整动画事件轴上的线,选中关键帧的时间,调整模型的位置或者旋转角度,具体根据插入关键帧菜单选择的项进行模型的相关调整。

SmileBu丿㦌的博客 2068

8、Template Method 模板方法

模板方法模式是在日常开发中使用最为广泛的设计模式之一。 定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重定义该算法中的某些特定步骤。 类图 代码实例 某日,程序员A拿到一个任务:给定一个整数数组,把数组中的数由小到大排序,然后把排序之后的结果打印出来。经过分析之后,这个任务大体上可分为两部分,排序和打印,打印功能好实现,排序就有点麻烦了。但是A有办...

sinat_37138973的博客 354

从流体力学到深度学习:手把手教你用PINN预测涡流场(基于TensorFlow2.10+GPU)

本文详细介绍了如何利用物理信息神经网络(PINN)结合TensorFlow 2.10和GPU加速,预测Navier-Stokes方程的涡流场。通过核心原理讲解、实战环境配置、网络架构设计及物理约束实现,帮助读者掌握从流体力学到深度学习的跨学科技术应用,特别适合处理复杂流体问题和非定常流动场景。

weixin_29048309的博客 212

Head First 设计模式 Design Pattern 7-8 Adapter & Facade, Template Method

Section 7 适配器模式和外观模式 Adapter & Facade >客户使用适配器 Client - Request -> Adapter -> TranslateRequest - Adaptee  客户通过目标接口调用适配器的方法发出请求; 适配器使用被适配者的接口把请求转换成被适配者的一个或多个调用接口; 客户收到调用结果, 并不知道是适配器在转化请求 >双向

Fix it 1684

工业以太网通讯Profinet协议详解

Profinet是通过西门子控制系统被广泛使用的工业通信协议,是一种较新的,基于以太网的工业通讯协议。

mydatai的专栏 8852

Python爬虫实战:5分钟搞定Web of Science文献批量导出与解析(附完整代码)

本文提供了一套利用Python爬虫技术,快速实现Web of Science文献批量提取与解析的完整方案。通过解析官方导出的HTML文件,结合BeautifulSoup和pandas库,可将文献数据自动转换为结构化的Excel/CSV表格,帮助科研人员高效管理文献信息,节省大量手动整理时间。

weixin_29050513的博客 1166

设计模式(8)the Template Method Pattern (模板方法模式)

文章目录概念实现比较Template Method Method Pattern:Hook(钩子)方法Hollywood Principle 概念 Template Method(模板方法): 例如做咖啡和茶是有类似的过程的: 烧水 混合(放入咖啡或者茶叶) 倒入杯子 添加一些附加材料(糖或者其他) 其中步骤2和4有些许不同。我们在写这样的一个类,如果分开写,1,4步骤的代码要被重复写两次。所...

铁锹的填坑记录 263

Autosar CAN 网络管理测试用例(3)——Repeat Message Timer 时间测试

Autosar CAN 网络管理测试用例(3)——Repeat Message Timer 时间测试

蚂蚁小兵 2466

Spring 全家桶的骨架是 Template Method——你天天在用,但从没意识到它是个设计模式

面试的时候被问到"你用过哪些设计模式",大部分 Java 开发者会答 Singleton、Factory、Strategy。很少有人提 Template Method。但翻开 Spring 的源码,JdbcTemplate、RestTemplate、TransactionTemplate、RedisTemplate——每个都以 Template 结尾,每个的核心都是同一个模式。你写的每一行,背后跑的都是 Template Method。不是这个模式冷门,是它太自然了,自然到你感觉不到它的存在。

zhouhui001的博客 169

Sigrity OptimizePI Best Capacitor Location Estimation模式如何评估电容最佳位置操作指导

Sigrity OptimizePI Best Capacitor Location Estimation模式用于前仿真分析,评估电容的最佳位置以获得最小回路电感,如何分析,以下图为例进行说明。IC devices,输入U*, A*, B*, Q*, P*,将所有这些字母开头的器件都识别为IC。Min设置为1(最少电容个数为1),max设置为28(最多电容个数为28)Capacitors 输入C*,将所有C开头的器件都识别为电容。Grid X设置为8,Grid Y也设置为8。

weixin_54787054的博客 382

《SOC架构-ARM架构-文档导读》-目录

小白请看“Armv8/Armv9架构从入门到精通”专栏。以翻译为主的,深度深度深度深度/深入深入深入 学习ARM架构的文章。

baron-周贺贺-代码改变世界ctw 2085

设计模式: 8. 模版方法模式(Template Method)

1. 介绍1.1 针对的问题 不同程序员间随意设计某个功能需要应对不同情况进行多个实现, 但是不同的程序员设计会导致每个情况程序设计的风格差很多, 还很不规范. 重复设计严重有些设计在不同场合是可以复用的, 程序员只要重写那些无法复用的部分即可. 1.2 解决方法 Template Method制作一个模版, 不同情况的设计都按照统一的模版来写. 可以复用的部分就不用写. 只要重写一个个功能模块就可

Avalon 483

使用 MATLAB/Simulink 对基于同步发电机的双机系统进行建模

双机系统(Two-Machine System)是电力系统中用于研究动态稳定性和控制策略的一个典型模型。它由两台同步发电机通过输电网络相互连接,模拟实际电网中的互联操作。当发生短路故障时,系统的暂态稳定性会受到挑战,可能导致发电机失步或电压崩溃。本教程将带你使用 MATLAB/Simulink 对基于同步发电机的双机系统进行建模,并对其在短路故障条件下的暂态稳定性进行仿真和分析。

amy_mhd的博客 216

设计模式-8--模板方法模式(Template Method Pattern)

模板方法模式(Template Method Pattern)是一种行为型设计模式,它定义了一个算法的骨架,将一些步骤的实现延迟到子类中。模板方法模式允许在不改变算法的结构的情况下,通过在子类中重写特定步骤的具体实现,来改变算法的部分行为。抽象类(Abstract Class):定义了一个模板方法,其中包含了算法的骨架,包括一系列步骤的调用顺序和约定。这些步骤可以是具体的方法,也可以是抽象的,留给子类实现。

人生若只能如初见的博客 1141

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

学习笔记(十一)——设计模式

这次理论内容较多,大家有什么不明白的可以自己查阅。 与开始学习Android代码不同,我自己认为设计模式已经是学习Android(包括其他的设计语言一样)的一种升华,它更多的不是强调代码的含义及使用,而是更多强调设计程序的框架,是从更高的眼光来看整个设计过程。 Android是以Java为基础进行开发的,Java是一种面向对象的设计语言,通过学习,我发现它最大优势不是通过封装继承多态实现更方便的

BistuSim的博客 609

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Java 8 - include static methods inside interfaces

This allows utilities that rightly belong in the interface, which are typically things that manipulate that interface, or are general-purpose tools: // onjava/Operations.java // (c)2017 MindView LLC...

wangbingfengf98的专栏 117

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Java设计模式之—Template Method模式(模板模式)

Java设计模式之—Template Method模式(模板模式) Template Method模式是带有模板功能的模式。组成模板的方法被定义在父类中。在父类中定义处理流程的框架,在子类中具体处理。 AbstractDisplay类(抽象类) public abstract class AbstractDisplay { public abstract void open(); publi...

weixin_40649194的博客 275

Form Template Method

  《重构》中此方法叫做塑造模板函数,在设计模式中,对应的模式就是模板模式。重构中的很多变动比较大的方法都会导致重构,但重构中有非常多的小重构手法。就好像建筑一个房子,设计模式教你厨房客厅怎么搭配以设计出一个什么样的风格,而重构中给出了更多的建议,细小的细节,哪些地方应该怎么处理,会导致程序易读、易维护、易扩展。塑造模板函数是一个非常重要的重构手法,熟练运用此手法能直接将过程化的代码“变...

282

设计模式笔记之 -Template Method & Strategy

Template Method: 通过抽象分离有共性的方法放入基类中,从而完成通用算法,将所有实现都交给该基类的抽象方法。 运用此模式主要在于建立抽象基类,制定抽象方法。 注意:不要滥用模式,如果把一个简单的问题复杂话了,那还不如不用模式,把一个简单的方法放在抽象基类里,并不能带来什么好处,反而增加了代码的复杂性。 冒泡排序的例子: ...

weixin_34247299的博客 85

Template Method

模板方法模式:定义一个操作中算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可以重定义该算法某些特定步骤。 特点: 模板方法模式是通过把不变的行为放到超类中,去除子类中重复的代码来体现它的优势。提供了一个很好的复用平台。 当不变和可变的行为方法的子类实现中混合在一起的时候,不变的行为会在子类中重复实现。我们通过模板方法模式把这些行为搬移到单一的...

dengliru4372的博客 70

Design Pattern: Template Method 模式

学习是分享和合作式的! 转载请注明出处:http://blog.youkuaiyun.com/wdzxl198/article/details/9223275; 文章摘自: http://www.riabook.cn/doc/designpattern/; 不要将设计模式想得高不可攀,好像高手才会使用的东西,事实上如果您在下手程式之前,能稍稍对程式作个分析规划,或多或少都会用到一些模式了,模式不

Atlas2013的专栏 979

Missing URI template variable ‘bizType‘ for method parameter of type int]

2020-10-16 10:45:55.060 WARN 19064 --- [nio-8088-exec-8] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.bind.MissingPathVariableException: Missing URI template variable 'bizType' for method parameter of type int]

jiaonizuoren的博客 371

模式Template Method与Strategu模式

 设计模式Template Method,核心理念是工作流程逻辑到抽象超类的集中化,一些具体方法实现交给子类处理 /** * Template Method模式 * 超类集中业务逻辑,而子类集中于实现基本超作 * @author paul * @date 2006-8-9 */public abstract class CaffeineBeverage {    /**     * 业

L_xiaodao的专栏 1312

Behavioral模式之template Method模式

1.意图定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。2.别名暂无3.动机考虑一个提供Application和Document类的应用框架。Application类负责打开一个已有的以外部形式存储的文档,如一个文件。一旦一个文档中的信息重该文件中读出后,它就由一个Document对象表示。4.适用性以

feiyangxiaomi的专栏 778

条款22 template method 模式

template method 模式,模板方法模式 其实他和C++模板没有关系。 前者是提供的为派生类设计者提供清晰指示的一种方法,这个事实表示“如何去实现基类所规定的契约” 基类可以自由的通过公有成员函数指定与外界的契约关系,并通过受保护的成员函数为派生类的行为指明额外的细节,私有成员函数也可以用做类实现的一部分。一般数据成员应该是私有的。 如果积累的成员是非虚拟的,那么积累的设计者就...

aizhih00669的博客 193
上一篇: 7-Policy: generalized strategy
下一篇: 9-Factory method(Simple Factory method&Abstract factories)
ccfangle
博客等级 码龄20年 1粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值