`

模版模式和回调模式

阅读更多

原创内容,转载请注明出处

1、模版模式

模版模式,顾名思义,是指将一些通用的行为实现都已完成,然后一些可变的行为交由我们来实现完成。在实际生活中有很多这样的例子,比如填写合同协议或者其他文件,文件上已经有通用的信息,我们只需要填写我们的个人信息并且签名即可,该文件就是一个模版。

UML类图表示


 创建父类SuperClass

package com.test.designermodel.templatemodel;

public abstract class SuperClass {

	public void process(){
		System.out.println("通用方法实现开始");
		excute();
		System.out.println("通用方法实现结束");
	}
	
	protected abstract void excute();
}

 创建子类实现类ConcreteClass

 

package com.test.designermodel.templatemodel;

public class ConcreteClass extends SuperClass {

	@Override
	protected void excute() {
		System.out.println("---执行处理---");
	}

}

 编写Junit测试代码

	/**
	 * Java模版模式
	 */
	@Test
	public void testTemplateModel(){
		ConcreteClass concreteClass = new ConcreteClass();
		concreteClass.process();
	}

 测试结果如下

 
 

2、回调模式

回调模式在Spring中有大量应用,比如Spring 的DaoSupport系列类,都使用了模版和回调模式组合。

上述例子可以这样实现,将execute方法抽出来,做成一个接口。

UML类图表示

 

 

 创建Supportclass类

package com.test.designermodel.templatemodel.callback;

public class SupportClass {

	public void process(CallBack callBack){
		System.out.println("通用方法实现开始");
		callBack.excute();
		System.out.println("通用方法实现结束");
	}
}

 创建回调接口CallBack类

package com.test.designermodel.templatemodel.callback;

public interface CallBack {

	public void excute();
}

 创建Junit测试代码

	/**
	 * Java模版模式和回调模式
	 */
	@Test
	public void testTemplateModelAndCallback(){
		new SupportClass().process(new CallBack() {
			
			public void excute() {
				System.out.println("---------回调执行处理---------");
			}
		});
	}

 测试结果如下图

 

 

源代码如附件


 

如上测试结果客户端调用SupportClass类的方法,SupportClass类之后会反过来调用客户端的Callback接口方法。

  • 大小: 2.3 KB
  • 大小: 1.3 KB
  • 大小: 1.7 KB
  • 大小: 2.3 KB
分享到:
评论

相关推荐

    【转】Spring中模板模式和回调模式的讲解

    在Spring框架中,模板模式和回调模式是两种重要的设计模式,它们被广泛应用于处理各种不同的任务,如数据访问、远程调用等。这两种模式都旨在提高代码的可扩展性和复用性,使得开发者能够以更加灵活的方式处理业务...

    Spring 学习 JdbcTemplate,模板模式,回调

    本主题将深入探讨Spring框架中的JdbcTemplate组件,以及模板模式和回调机制的概念。 **1. Spring JdbcTemplate** JdbcTemplate是Spring提供的一个用于简化数据库操作的API,它是Spring对JDBC(Java Database ...

    59丨模板模式(下):模板模式与Callback回调函数有何区别和联系?1

    回调函数和模板模式都是软件设计中用于实现代码复用和扩展的重要工具,它们在不同的场景下各有优势。模板模式是一种行为设计模式,它定义了一组操作的算法骨架,同时允许子类在某些步骤中替换具体行为。而回调则是...

    适用于参数传递和回调的C++模板类

    本主题将深入探讨如何利用模板实现适用于参数传递和回调功能的类设计。回调函数是一种设计模式,允许我们将一个函数作为参数传递给另一个函数,在特定事件发生时调用这个传递的函数。 首先,`ccallback.h`文件可能...

    策略模式结合模板方法模式

    在这种情况下,策略模式可以有三种实现方式:一是在上下文中实现公共功能,让所有具体的策略算法回调这些方法;二是把策略的接口改成抽象类,然后在里面实现具体算法的公共功能;三是给所有的策略算法定义一个抽象的...

    C++回调模板类的例子

    在C++编程中,回调是一种常见的设计模式,它允许我们将一个函数作为参数传递给另一个函数,以便在适当的时候被调用。回调函数通常用于事件处理、异步操作或任何需要在特定条件满足时执行的代码。在这个例子中,我们...

    亲测完整微信企业号回调模式URL验证代码

    回调模式URL验证是确保通信双方身份合法性的过程,防止中间人攻击和其他安全风险。这里,我们将深入探讨微信企业号回调模式URL验证的核心知识点,并提供一个亲测有效的代码示例。 1. 微信企业号回调模式概述: - ...

    spring模板模代码

    下面将详细探讨Spring模板模式的原理、应用以及接口回调的概念。 **模板模式** 是一种行为设计模式,它定义了算法的骨架,并允许在特定步骤中延迟或定制某些行为。在Spring框架中,模板类通常负责执行网络请求、...

    C++中回调(CallBack)的使用思路

    通过上述模板化的实现方式,我们可以更加灵活地在C++程序中使用回调机制。这种方式不仅提高了代码的安全性,还增强了代码的可读性和可扩展性,使得回调功能在复杂的应用场景下变得更加可靠和高效。无论是处理复杂的...

    微信企业号回调模式设置图解(PHP版).docx

    微信企业号提供了一种强大的消息推送机制,即“回调模式”,允许企业通过自定义服务器接收来自微信的消息,从而实现更灵活的服务响应和数据处理。本文将详细介绍如何设置微信企业号的回调模式,并解决其中常见的...

    Java模板方法设计模式[定义].pdf

    Java 模板方法设计模式定义 Java 模板方法设计模式是指在软件...Java 模板方法设计模式是通过回调机制来实现算法的可扩展性和灵活性的设计模式。该模式的使用场景广泛,例如在 Web Service 和 RMI 等领域都有应用。

    Caiguangnan#ProgrammerToolBox#18.回调(模板方法模式)1

    一、回调的实现(模板方法模式)定义:设计操作的算法骨架,将某些步骤延迟到子类中实现(自定义性质很强)。//搭建骨架public final void proce

    DLL回调函数Demo

    2. 在新创建的DLL项目中,添加头文件(.h)和实现文件(.cpp),定义回调函数的接口。 例如,我们可以在头文件(CallBackDLL.h)中声明回调函数的原型: ```cpp #ifndef CALLBACKDLL_H #define CALLBACKDLL_H ...

    回调函数机制

    回调函数机制是一种编程模式,它允许在程序运行过程中,将一个函数的地址传递给另一个函数,以便在特定时机被调用。这种机制在C语言中尤为重要,因为它允许程序在运行时动态地将函数绑定到调用点上,从而提供了更大...

    浅谈C++模板实现模块间参数传递及回调

    一篇关于C++模板 设计模式 软件架构的文档,里面实现了一个泛化的命令模式和观察者模式

    PHP微信企业号开发之回调模式开启与用法示例

    因此,熟悉官方文档,理解微信企业号的通信机制,以及掌握`WXBizMsgCrypt`类的使用,对于成功实现回调模式至关重要。同时,遇到问题时要有耐心,仔细检查配置和代码,确保与官方示例保持一致,并及时更新以适应微信...

    回调函数,使用c++做的例子

    2. **模板化**:可以通过模板化来增加回调函数的通用性,使其能够接受不同类型的参数。 ```cpp template void CallPrintfText(std::function(T)> callfuct, T s) { callfuct(s); } int main() { ...

    模板设计模式_构建公共通用的Dao

    3. **钩子方法(Hook Method)**:这些是可选的回调方法,子类可以决定是否覆盖它们。在模板方法中,钩子方法可能被调用,以便在特定步骤执行前后插入自定义逻辑。 4. **具体类(Concrete Classes)**:实现抽象类...

Global site tag (gtag.js) - Google Analytics