模板设计模式是通过抽象类来实现的,该抽象类的方法可以分为两大类:模板方法和基本方法。
模板方法
一个模板方法是定义在抽象类中的,把基本操作方法组合在一起形成一个总算法或一个总行为的方法。
一个抽象类可以有任意多个模板方法,而不限于一个。每一个模板方法都可以调用任意多个具体方法。
基本方法
基本方法又可以分为三种:抽象方法(Abstract Method)、具体方法(Concrete Method)和钩子方法(Hook Method)。
● 抽象方法:一个抽象方法由抽象类声明,由具体子类实现。在Java语言里抽象方法以abstract关键字标示。
● 具体方法:一个具体方法由抽象类声明并实现,而子类并不实现或置换。
● 钩子方法:一个钩子方法由抽象类声明并实现,而子类会加以扩展。通常抽象类给出的实现是一个空实现,作为方法的默认实现。
模板方法就是一个方法(通常为final,不允许子类进行覆盖),该方法包含了一个算法的各个步骤(每个步骤相当于一个方法),在模版方法内调用的方法中有抽象的(待子类覆盖),也有具体的。另外在模版方法所属类中可以包含一个钩子方法(hook),该方法可以控制模版方法中的逻辑,该方法提供默认的实现。子类不是必须实现它。下面给出一个具体的例子。
模版方法类:
/** * 基于继承实现模板设计模式 * @author Administrator * */ public abstract class MyJdbcTemplateByIn { private void beginConnection() { System.out.println("begin connection"); } private void closeConnection() { System.out.println("close connection"); } public abstract void run(); /** * 在模板设计模式中有一种函数叫做钩子函数,钩子函数的作用是让实现类可以通过一些方法来控制模板中的流程 * @return */ public boolean isLog(){return false;} //模板方法 public final void execute() { beginConnection(); if(isLog()) { System.out.println("加入了日志"); } run(); closeConnection(); } }
不同的实现方法:
public class MessageDao extends MyJdbcTemplateByIn { @Override public void run() { System.out.println("msg add"); } @Override public boolean isLog() { return true; } }
public class RoleDao extends MyJdbcTemplateByIn { @Override public void run() { System.out.println("role add"); } }
测试方法:
public class TestTemplate { @Test public void test01() { MyJdbcTemplateByIn mt = new RoleDao(); mt.execute(); MyJdbcTemplateByIn msgt = new MessageDao(); msgt.execute(); } }
设计思想:
作为模板的方法定义在父类(父类为抽象类),而方法定义使用抽象方法,实现抽象方法的是子类,要在子类实现方法,才能决定具体的操作。如果在不同的子类执行不同实现就可以发展出不同的处理内容。不过,无论在哪个子类执行任何一种实现,处理的大致流程都还是要依照父类制定的方式。
相关推荐
模板设计模式是面向对象设计模式的一种,它在软件工程中扮演着重要的角色,尤其是在构建可扩展和可维护的代码库时。这个模式属于行为设计模式,主要用来在父类中定义一个操作流程的骨架,而将具体实现细节留给子类去...
**模板设计模式** 模板设计模式是一种行为设计模式,它使你能在不破坏封装性的前提下,定义对象的行为。在Java编程中,模板方法模式是一种结构型设计模式,它定义了算法的骨架,允许子类在不改变算法结构的情况下重...
java抽象类的程序案例,可以准备参加华为2014年校园招聘机试题 做准备
### 设计模式总结:模板设计模式与单例模式 #### 模板设计模式 模板设计模式是一种行为型设计模式,它定义了一个算法的骨架,并允许子类为算法的某些步骤提供具体的实现。通过这种方式,算法的基本流程保持不变,...
而模板设计模式则是一种行为设计模式,它提供了一种方法的通用实现,允许子类在不改变整体结构的情况下,定制特定的步骤。当我们将这两种概念结合时,我们可以通过Template模式来优雅地处理事务的控制。 首先,让...
10.6抽象类 10.6.1问题引入 10.6.2解决之道-抽象类快速入门 10.6.3抽象类的介绍 ...10.7抽象类最佳实践-模板设计模式 10.7.1基本介绍 10.7.2模板设计模式能解决的问题 10.7.3最佳实践 10.7.4模板设计
模板方法模式是设计模式中行为型模式的一种,它在软件工程中扮演着非常重要的角色,尤其是在Java编程中。模板方法模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。它允许子类不改变一个算法的结构即可重...
模板方法模式是设计模式中的一种行为模式,它在软件工程中扮演着重要的角色,尤其是在创建算法族时。这种模式允许我们在抽象类中定义一个算法的框架,而将具体步骤延迟到子类中实现,从而实现了代码复用和扩展。下面...
模板设计模式是面向对象设计模式中的一个核心概念,它在软件工程中被广泛应用于实现算法族的抽象。这种模式提供了一种在不指定具体实现的情况下定义算法骨架的方式,允许子类在不影响整体结构的情况下,对特定步骤...
标题中的“使用模板设计模式重用ADO.NET代码”是指在软件开发中,通过应用设计模式中的模板模式,来实现ADO.NET代码的复用和规范化。模板模式是一种行为设计模式,它定义了算法族的框架,允许子类在不改变整体结构的...
模板方法模式是面向对象设计模式中的行为模式之一,它在Java等面向对象编程语言中有着广泛的应用。模板方法模式的主要思想是在一个抽象类中定义一个算法的骨架,而将一些步骤延迟到子类中实现。这样,子类可以重写...
策略模式结合模板方法模式的设计思路 策略模式结合模板方法模式是策略模式的一种变形,目的是为了解决策略模式中的一些共性问题。在策略模式中,经常会出现这样一种情况,就是发现这一系列算法的实现上存在公共功能...
Servlet生命周期和模板设计模式是Java Web开发中的两个关键概念,它们在构建动态Web应用程序时起着至关重要的作用。 首先,让我们深入理解Servlet的生命周期。Servlet是Java编程语言中的一种接口,用于扩展服务器的...
### 设计模式之模板方法模式解析 #### 一、引言 在软件开发过程中,我们经常面临这样的场景:有一些步骤是固定的,而某些步骤则可能因具体实现而异。为了解决这类问题,设计模式中引入了一种叫做“模板方法模式”的...
模板方法模式是设计模式中行为模式的一种,它在软件工程中扮演着重要的角色,尤其是在创建算法框架时。这种模式允许我们在抽象类中定义一个算法的骨架,而将一些步骤延迟到子类中实现,使得子类可以不改变算法的结构...
### 深入浅出设计模式之模板方法模式 #### 一、模板方法模式概述 设计模式是软件工程中一种非常重要的技术手段,它能够帮助我们解决常见的编程问题,并提高代码的可重用性、可扩展性和可维护性。模板方法模式是一...