定义:在一个方法中定义一个算法骨架,而将一些步骤延伸到子类中。(其本质:把可变和不可变进行分类。可变部分延伸到子类来完成,不变部分交给父类定义成骨架)
优点:
1)可以使的子类可以在不改变算法骨架的情况下,重新定义算法中的某些步骤。
2)模版方法通过把不变的部分搬移到超类,去除了子类中的重复代码。
3)子类实现算法的特定步骤,有利于算法的扩展。
4) 通过一个父类调用子类实现的操作,通过子类扩展新的行为,符合“开放-封闭原则”。
缺点:每一个不同的实现都需要一个子类来完成,这个会导致子类个数的增加,设计更抽象。
使用场景:
1)在某些算法中,有了相同的方法,造成的代码重复。
2)控制子类扩展,子类必须遵守算法规则。
场景:
冲茶水: 冲咖啡:
1) 洗杯子 1)洗杯子
2) 烧开水 2)烧开水
3) 加料(加茶叶) 3)加料(加咖啡)
4) 烫材料(沸水烫茶叶)4)烫材料(温水冲咖啡)
分析:
不变部分:冲咖啡和冲茶水的步骤是一样的,抽象部分(不变部分:1洗杯子、2烧开水、3加料、4烫材料)
可变部分:加料和烫料是可变部分。因此此部分需要交给子类扩展延伸,保证了代码在骨架上的重用。
1、定义模版(冲水模版)
public abstract class FlushWaterTemple{
//定义算法骨架
public void flushWater(){
wash();
boilWater();
addMaterial();
finshedWater();
}
public void wash(){
System.out.println("洗杯子");
}
public void boilWater(){
System.out.println("烧水");
}
//加料
public abstract void addMaterial();
//烫材料
public abstract void finshedWater();
}
}
2、冲茶叶
public class FlushTea extends FlushWaterTemple{
//加料
public void addMaterial(){
System.out.println("加点茶叶");
}
//烫材料
public void finshedWater(){
System.out.println("用沸水烫茶叶");
}
}
2、冲咖啡
public class FlushCoffee extends FlushWaterTemple{
//加料
public void addMaterial(){
System.out.println("加点咖啡");
}
//烫材料
public void finshedWater(){
System.out.println("用温水烫咖啡");
}
}
测试
public class Test{
public static void main(){
FlushWaterTemple tmp = new FlushCoffee();
tmp.flushWater();
}
}
分享到:
相关推荐
模板设计模式是面向对象设计模式中的经典之一,它在软件工程中扮演着重要的角色,用于定义算法的骨架,而将一些步骤延迟到子类中。这样,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。...
模板设计模式是面向对象设计模式的一种,它在软件工程中扮演着重要的角色,尤其是在构建可扩展和可维护的代码库时。这个模式属于行为设计模式,主要用来在父类中定义一个操作流程的骨架,而将具体实现细节留给子类去...
**模板设计模式** 模板设计模式是一种行为设计模式,它使你能在不破坏封装性的前提下,定义对象的行为。在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编程语言中的一种接口,用于扩展服务器的...
### 设计模式之模板方法模式解析 #### 一、引言 在软件开发过程中,我们经常面临这样的场景:有一些步骤是固定的,而某些步骤则可能因具体实现而异。为了解决这类问题,设计模式中引入了一种叫做“模板方法模式”的...
模板方法模式是设计模式中行为模式的一种,它在软件工程中扮演着重要的角色,尤其是在创建算法框架时。这种模式允许我们在抽象类中定义一个算法的骨架,而将一些步骤延迟到子类中实现,使得子类可以不改变算法的结构...
### 深入浅出设计模式之模板方法模式 #### 一、模板方法模式概述 设计模式是软件工程中一种非常重要的技术手段,它能够帮助我们解决常见的编程问题,并提高代码的可重用性、可扩展性和可维护性。模板方法模式是一...