所谓模板板式,就是在父类中定义算法的主要流程,而把一些个性化的步骤延迟到子类中去实现,父类始终控制着整个流程的主动权,子类只是辅助父类实现某些可定制的步骤。
好吧,我们用代码来说话吧:
首先,父类要是个抽象类:
Java代码
public abstract class TemplatePattern {
//模板方法
public final void templateMethod(){
method1();
method2();//勾子方法
method3();//抽象方法
}
private void method1(){
System.out.println("父类实现业务逻辑");
}
public void method2(){
System.out.println("父类默认实现,子类可覆盖");
}
protected abstract void method3();//子类负责实现业务逻辑
}
父类中有三个方法,分别是method1(),method2()和method3()。
method1()是私有方法,有且只能由父类实现逻辑,由于方法是private的,所以只能父类调用。
method2()是所谓的勾子方法。父类提供默认实现,如果子类觉得有必要定制,则可以覆盖父类的默认实现。
method3()是子类必须实现的方法,即制定的步骤。
由此可看出,算法的流程执行顺序是由父类掌控的,子类只能配合。
下面我们来写第一个子类:
Java代码
public class TemplatePatternImpl extends TemplatePattern {
@Override
protected void method3() {
System.out.println("method3()在子类TemplatePatternImpl中实现了!!");
}
}
这个子类只覆盖了必须覆盖的方法,我们来测试一下:
Java代码
- TemplatePattern t1 = new TemplatePatternImpl();
- t1.templateMethod();
在控制台中我们可以看到:
Java代码
- 父类实现业务逻辑
- 父类默认实现,子类可覆盖
- method3()在子类TemplatePatternImpl中实现了!!
OK,我们来看看勾子方法的使用:
定义第2个子类,实现勾子方法:
Java代码
public class TemplatePatternImpl2 extends TemplatePattern {
@Override
protected void method3() {
System.out.println("method3()在子类TemplatePatternImpl2中实现了!!");
}
/* (non-Javadoc)
* @see com.jak.pattern.template.example.TemplatePattern#method2()
*/
@Override
public void method2() {
System.out.println("子类TemplatePatternImpl2覆盖了父类的method2()方法!!");
}
}
来测试一下:
Java代码
- TemplatePattern t2 = new TemplatePatternImpl2();
- t2.templateMethod();
我们看控制台:
Java代码
- 父类实现业务逻辑
- 子类TemplatePatternImpl2覆盖了父类的method2()方法!!
- method3()在子类TemplatePatternImpl2中实现了!!
分享到:
相关推荐
模板模式是一种行为设计模式,它在面向对象编程中扮演着重要的角色。这个模式定义了算法的骨架,并允许子类在不改变结构的情况下重定义某些步骤。模板方法模式遵循了“开闭原则”,即对扩展开放,对修改关闭,使得...
回调函数和模板模式都是软件设计中用于实现代码复用和扩展的重要工具,它们在不同的场景下各有优势。模板模式是一种行为设计模式,它定义了一组操作的算法骨架,同时允许子类在某些步骤中替换具体行为。而回调则是...
模板模式是一种行为设计模式,它在Java编程中扮演着重要的角色,主要用来定义算法的骨架,而将一些步骤延迟到子类中。这种模式让子类可以在不改变算法整体结构的情况下,重定义某些特定步骤。在Java设计模式之模板...
模板模式是一种行为设计模式,它使你能在代码中定义一个操作的不同步骤,并让子类决定这些步骤如何执行。模板模式提供了创建算法结构的通用接口,而具体的实现则由子类来完成。这种模式允许在不修改原有代码的情况下...
模板模式是一种行为设计模式,它使你能在不破坏封装性的前提下,定义对象间的一系列基本操作,并在子类中实现这些操作的具体步骤。在模板模式中,一个抽象类公开定义了执行它的方法的方式,而将具体实现延迟到子类中...
Java模板模式和策略模式是两种常用的面向对象设计模式,它们在软件开发中有着广泛的应用。模板模式是一种行为设计模式,而策略模式则属于结构型设计模式。这两种模式都是用来处理算法和行为的,但它们的核心理念和...
**模板模式(Template Pattern)**是一种行为设计模式,它使你能在抽象类中定义操作算法的框架,而将一些步骤延迟到子类中。这样,子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 在Java、C#等面向...
本主题将深入探讨Spring框架中的JdbcTemplate组件,以及模板模式和回调机制的概念。 **1. Spring JdbcTemplate** JdbcTemplate是Spring提供的一个用于简化数据库操作的API,它是Spring对JDBC(Java Database ...
模板模式是一种行为设计模式,它在面向对象编程中扮演着重要的角色。此模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。这样,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤...
模板模式是一种行为设计模式,它使你能在不破坏封装性的前提下,定义对象系列的算法族。这种模式在Java编程中广泛应用,可以帮助我们遵循“开闭原则”,即对扩展开放,对修改关闭。 模板模式的核心思想是定义一个...
策略模式与模板模式的区别 - Eviltuzki的个人页面 - OSCHINA - 中文开源技术交流社区.mht
本篇文章将深入探讨两种重要的设计模式:策略模式和模板模式。通过理解这两种模式,开发者可以更好地组织代码,提高代码的灵活性和可扩展性。 ### 策略模式 策略模式是一种行为设计模式,它使你能在运行时改变对象...
### 模板模式 (Template Pattern) #### 一、概述 模板模式是一种常用的行为设计模式,其核心在于定义了一个算法的框架,并允许子类提供具体的实现细节。通过这种方式,子类可以继承并重写某些方法,但整个算法的...
**模板模式**是一种行为设计模式,它允许在父类中定义算法的骨架,而将一些具体步骤的实现延迟到子类中。这种模式主要用于在代码中定义一套算法的框架,并允许子类在不改变算法整体结构的情况下重定义特定的步骤。 ...
### MVC设计模式详解 ...MVC模式通过分离关注点提高了应用程序的灵活性和可维护性,而模板模式则通过封装变化点来增强代码的复用性。在实际开发中,根据项目的特性和需求选择合适的设计模式是非常重要的。
本主题将深入探讨两种重要的设计模式——策略模式和模板模式。 策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在策略模式中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为...
模板模式是一种行为设计模式,它使你能在不破坏封装性的前提下,定义执行算法的框架,而将一些步骤延迟到子类中。这样,你就能创建一个可复用的框架,将具体步骤留给子类来实现。这个模式的核心思想是抽象类定义了一...
模板模式是一种行为设计模式,它使你能在代码中定义基本操作步骤,并允许子类在不改变整体结构的情况下重定义某些步骤。在Java编程中,模板模式是经常被用来实现代码复用和创建可扩展框架的基础。 模板模式的核心...
模板模式是一种设计模式,它是行为设计模式的一种,用于在不同情况下定义算法的框架,而将具体的操作留给子类去实现。这种模式的核心思想是封装不变的部分,扩展可变的部分,从而实现代码的复用和扩展。 模板模式的...
在Java中,好奇递归模板模式(CRTP)是一种强大的设计模式,用于实现静态多态性。通过让一个类模板从其自身类的模板实例化中派生,CRTP能够实现方法重写和编译时的多态行为,提高Java应用程序的效率和性能。 ## 二...