我在读设计模式,特别是模板方法,这时我的注意力被这个问题吸引住了。
在阅读了解释和具体代码之后,我仍然想知道为什么这是一个“模板方法”设计模式的示例。
根据GoF,这种模式的目的是:
"在操作中定义算法的框架,将一些步骤推迟到子类。模板方法允许子类在不改变算法结构的情况下重新定义算法的某些步骤。"
有两名参与者:
AbstractClass:定义抽象基元操作,具体子类定义抽象基元操作以实现算法步骤,实现定义算法框架的模板方法。模板方法调用基本操作以及AbstractClass中定义的操作或其他对象的操作<具体类:实现原语操作,以执行算法的子类特定步骤。
为什么“Jdbc操作”中的代码被认为是“模板方法”设计模式?
我知道它对于消除样板代码非常方便。但是为什么这是一个模板方法,而不仅仅是一个漂亮的编码技巧。对我来说,它看起来没有模板方法所具有的任何特征。
根据JdbcTemplate文档
它简化了JDBC的使用,并有助于避免常见错误。它执行核心JDBC工作流,留下应用程序代码来提供SQL和提取结果。该类执行SQL查询或更新,在结果集上启动迭代,捕捉JDBC异常,并将其转换为组织中定义的通用、信息更丰富的异常层次结构。springframework。dao包。
JdbcTemplate为每个方法的内部工作提供了抽象。例如,insert()
或update()
在内部使用所选数据库的具体类的实现。客户机代码不必知道或实现这些方法,因为它们是由数据库供应商实现的。这就是它与模板设计模式紧密匹配的原因。
我同意,JdbcTemplate不是模板方法设计模式的示例。使用的设计模式是回调。
请注意,这两种模式的目标和效果非常相似,主要区别在于模板方法使用继承,而回调使用组合(排序)-请参阅https://en.wikipedia.org/wiki/Composition_over_inheritance了解为什么这可能是首选。
GoF中的两种设计模式代表了类似的想法-
“在操作(通用API)中定义算法的框架,并将一些专门化步骤委托给客户端。
>
模板设计模式:专业化是通过子类化完成的。(这不是JdbcTemplate中的方法。
策略:通过回调(委托)完成专门化。(这是JdbcTemplate中的方法。我们使用诸如ResultTextRactor之类的回调,它提供专门化逻辑)
JdbcTemplate与其说是模板,不如说是一种策略。
模板方法(Template Method) Intent 定义算法框架,并将一些步骤的实现延迟到子类。 通过模板方法,子类可以重新定义算法的某些步骤,而不用改变算法的结构。 Class Diagram Implementation 冲咖啡和冲茶都有类似的流程,但是某些步骤会有点不一样,要求复用那些相同步骤的代码。 // java public abstract class CaffeineBeve
介绍 模板方法(TemplateMethod)定义了一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 模板方法是一种代码复用的基本技术,在类库中尤为重要,因为他们提取了类库中的公共行为。模板方法导致一种反向的控制结构,这种结构就是传说中的“好莱坞法则”,即“别找找我们,我们找你”,这指的是父类调用一个类的操作,而不是相反。具
本文向大家介绍JavaScript设计模式之模板方法模式原理与用法示例,包括了JavaScript设计模式之模板方法模式原理与用法示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript设计模式之模板方法模式原理与用法。分享给大家供大家参考,具体如下: 一、模板方法模式:一种只需使用继承就可以实现的非常简单的模式。 二、模板方法模式由两部分组成,第一部分是抽象父类,第二部分
最近在一次采访中,我解释了我所研究的一个框架。我说过,我们通过使用模板方法设计模式提供扩展性,创建了一个控制反转。我说这是一个控制反转的例子,我们的框架调用框架用户实现的方法,采访者说模板方法设计模式不是IOC的例子。我想知道我对国际奥委会的理解是否有误?
本文向大家介绍学习JavaScript设计模式之模板方法模式,包括了学习JavaScript设计模式之模板方法模式的使用技巧和注意事项,需要的朋友参考一下 一、定义 模板方法是基于继承的设计模式,可以很好的提高系统的扩展性。 java中的抽象父类、子类 模板方法有两部分结构组成,第一部分是抽象父类,第二部分是具体的实现子类。 二、示例 Coffee or Tea (1) 把水煮沸 (2) 用沸水浸
本文向大家介绍Java设计模式模板方法模式(Template)用法解析,包括了Java设计模式模板方法模式(Template)用法解析的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了Java设计模式模板方法模式(Template)用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 前言: 我们在开发中有很多固定的流程,这些流程