`
aaron_ch
  • 浏览: 178246 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Template and Callback patterns in Spring

阅读更多

Spring中的Callback模式与Template模式合用,随处可见。Template method被广泛的使用,像Servlet就是使用这个模式。Template mothod模式虽然能简化很多重复的代码,但这种模式的也有不少限制。Template mothod将一个功能的实现分成许多小的步骤,在父类中定义了这些步骤的顺序,让子类来具体实现每一个小的步骤。这些小的步骤是protected,以防止用户不正确的使用这些小的步骤而产生异常。这样就产生了一个限制,那就是你需要继承Template然后重新实现具体的小步骤。如果这个Template有许多方法,就像JdbcTemplate,如果你每次继承这个庞大的类,然后只是重写某个小步骤中来订制你自己的功能,就会显得非常笨重,更何况数据库操作使用的如此频繁,难道你每进行一个操作就通过继承订制一个,显然不可能这么做。

Spring使用Callback模式与之配合,达到了去掉重复代码的效果,同时增加了很大的灵活性,你只需要实现某些CallBack就可轻松订制出Template

那么什么时候才是Callback模式与Template模式结合的最佳时机呢。显然如果每个具体的步骤都需要真正去具体实现而不是简单的改变参数或设置某个对象就ok的话,使用Callback很难去订制,因为你可能需要传递多个Callback作为参数,并让用户去实现,是用Java的内部类本来就是一个比较丑陋的语法,更何况参数是多个。这相当于你把每个小步骤封装成为接口,然后分别继承之然后实现。显然没有达到方便灵活的效果,这时候直接使用Template method模式就比结合Callback要好。而如果用户只需要定制一个方法能就达到用户的要求,或者更简单,只是设置不同的参数,那么使用Callback就具有很好的灵活性

分享到:
评论

相关推荐

    Node.js Design Patterns Second Edition[July 2016]

    Chapter 3, Asynchronous Control Flow Patterns with Callbacks, introduces a set of patterns and techniques for efficiently handling asynchronous control flow in Node.js. This chapter teaches you how to...

    Spring Dao层设计

    Spring 数据库访问的支持。包括统一异常体系和Spring的Template+CallBack的解读

    spring、ioc、aop、callback

    Spring 框架是 Java 开发中的一个核心组件,它为开发者提供了丰富的功能,包括依赖注入(IOC)、面向切面编程(AOP)以及回调机制。让我们深入了解一下这些概念。 **Spring IOC(Inversion of Control,控制反转)*...

    VC++ CALLBACK

    **VC++ CALLBACK** 在Microsoft Visual C++(简称VC++)编程中,回调函数是一种机制,允许我们传递一个函数作为参数给另一个函数,然后在需要的时候由这个接收函数调用我们传入的函数。这种功能在处理异步操作、...

    用友U9客户化开发 Callback & Postback 入门 v0.8

    用友U9客户化开发 Callback & Postback 入门 v0.8 用友U9客户化开发 Callback & Postback 入门 v0.8 是一份关于用友U9客户化开发中 Callback 和 Postback 的基础知识入门文档。该文档详细介绍了 Callback 和 ...

    okhttp的两种callback封装

    本文将深入探讨如何利用OkHttp进行网络请求,并封装两种Callback处理方式:一种是返回String类型,后续在子类进行JSON解析;另一种则是直接传入泛型的JavaBean,完成解析后再传回子类。 首先,了解OkHttp的基本用法...

    死磕Spring之AOP篇 - Spring AOP两种代理对象的拦截处理(csdn)————程序.pdf

    在 Spring AOP 中,`ObjenesisCglibAopProxy` 类负责使用 CGLIB 创建代理对象,它会将一系列的 `MethodInterceptor` 注册为 `Callback`,这些 `MethodInterceptor` 执行了 AOP 的逻辑。 在 Spring AOP 的自动代理...

    callback例子

    这是一个及其简单的但是又实用的callBack

    Spring源码缺失的spring-cglib-repack-3.2.6.jar和spring-objenesis-repack-2.6.jar

    CGlib的核心组件包括Enhancer、Callback和MethodInterceptor等,它们协同工作,使得Spring可以在不修改原有代码的情况下,实现动态代理和增强功能。 **Objenesis** Objenesis是一个轻量级库,用于在Java中创建对象...

    C++中回调函数(CallBack)的用法分析

    本文实例分析了C++中回调函数(CallBack)的用法。分享给大家供大家参考。具体分析如下: 如果试图直接使用C++的成员函数作为回调函数将发生错误,甚至编译就不能通过。 其错误是普通的C++成员函数都隐含了一个传递...

    CallBack_DEMO 回调

    回调(Callback)是一种在软件设计模式中常见的编程概念,它允许一个函数或对象在完成某个操作后通知另一个函数或对象。在本示例"CallBack_DEMO"中,我们可能正在探讨如何在Java或其他编程语言中实现回调机制。回调...

    callback

    callback

    C# WCF CallBack Demo

    **C# WCF CallBack Demo** Windows Communication Foundation (WCF) 是.NET Framework中用于构建分布式应用程序的服务模型。在WCF中,回调(Callback)是一种高级通信模式,它允许服务主动向客户端发送数据,而不...

    Callback

    在IT行业中,回调(Callback)是一种常见的编程技术,特别是在客户端-服务器交互中。本文将深入探讨标题中的"Callback"主题,结合C#语言和Windows Service服务程序,以及进程间通信(Inter-Process Communication, ...

    Cython封装Callback函数 示例

    cdef void release_gil_and_call(int value, PyObject* callback): with nogil: # 释放GIL,执行无Python字节码的操作 # 调用回调函数 (*)(int)>callback(value) def parallel_callback(int* values, int n, ...

    回调技术(CallBack)源码

    回调技术(Callback)是软件设计模式中的一种,它在异步编程或事件驱动编程中扮演着重要角色。回调函数是一种代码执行模式,允许一个函数或方法在特定事件发生时被另一个函数调用。这种机制使得程序能够以非阻塞的...

    Delphi DataSnap CallBack

    **Delphi DataSnap CallBack 知识点详解** 在Delphi开发环境中,DataSnap是一个强大的技术,用于构建分布式应用程序,特别是在实现服务器与客户端之间的数据交换和远程方法调用(Remote Method Invocation, RMI)时...

    Spring源代码解析(三):Spring_JDBC.doc

    在Spring框架中,Spring JDBC是核心模块之一,它提供了一种简单且强大的方式来处理数据库交互。本篇文章将深入解析Spring JDBC的实现,特别是JdbcTemplate类。JdbcTemplate是Spring为简化数据库操作而设计的一个模板...

    易语言Callback数据类型转易语言子程序源码.rar

    易语言Callback数据类型转易语言子程序源码.rar 易语言Callback数据类型转易语言子程序源码.rar 易语言Callback数据类型转易语言子程序源码.rar 易语言Callback数据类型转易语言子程序源码.rar 易语言Callback...

Global site tag (gtag.js) - Google Analytics