`
xiangdefei
  • 浏览: 58483 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

简单学习模板方法模式

阅读更多
  昨天下午闲暇无事翻了一下《java与模式》,偶然看到模板方法模式这一章,猛然间明白自己以前常用这模式,居然不知道。现把模板方法模式学习记录一下。
模板方法模式示意性代码如下.
下面定义的是抽象模板类:
public abstract class AbstractFatherClass {

	/**
	 * 模板方法的声明与实现
	 */
	public void templateMethod() {
		// 调用基本方法
		this.doOperation1();

		// 调用基本方法
		this.doOperation2();

		this.doOperation3();
	}

	/**
	 * 基本方法的声明 (此方法让此抽象类的子类实现)
	 */
	protected abstract void doOperation1();

	/**
	 * 基本方法的声明 (此方法让此抽象类的子类实现)
	 */
	protected abstract void doOperation2();

	private final void doOperation3() {
		// dosometing
	}
}



我们可以看到上面的代码中 doOperation1()和doOperation2()这两个基本方法在抽象模板类并没有实现,而是交给子类(具体模板类)去实现。

接下来定义具体模板类,具体模板角色主要实现抽象模板角色声明的抽象方法
public class ConcreteClass extends AbstractFatherClass {

	/**
	 * 实现抽象父类声明的抽象方法
	 */
	@Override
	protected void doOperation1() {

		System.out.println("doOperation1 method");

	}

	/**
	 * 实现抽象父类声明的抽象方法
	 */
	@Override
	protected void doOperation2() {

		System.out.println("doOperation2 method");

	}

}


上面的具体模板类实现了父类声明的基本方法doOperation1(),doOperation2()。
模板方法模式可以用一句很简单的话来表达:在父类的一个方法中定义一个算法的骨架,把具体的留给子类去做。
至于应该在什么阶段把处理分开来,哪些处理交给父类,哪些处理交给子类,这个要看实际情况然后去运用。
可以说模板方法模式是面向对象三大特性:继承,封装,多态 最简单的体现。
分享到:
评论

相关推荐

    设计模式-模板方法模式ppt

    在给定的PPT内容中,首先通过一个简单的生活实例——泡咖啡与泡茶的过程——来引入模板方法模式的应用场景。无论是泡咖啡还是泡茶,都有几个共同的步骤: 1. **烧开水**:这是泡咖啡和泡茶都必需的。 2. **泡制过程*...

    Head First 设计模式 (八) 模板方法模式(Template Method pattern) C++实现

    通过学习和应用模板方法模式,开发者可以在保证代码结构清晰的同时,提高代码的复用性和可维护性。在实际开发中,模板方法模式常用于框架设计、游戏逻辑、GUI组件等场景,有助于降低复杂度,提高代码的可读性和可...

    模式匹配学习模板_模式匹配学习模板_模板匹配_

    "模式匹配学习模板"是专为LabVIEW用户设计的,旨在帮助他们掌握这一核心技能。这个压缩包包含的学习模板,提供了深入理解并实践模式匹配的源程序。 LabVIEW,全称Laboratory Virtual Instrument Engineering ...

    设计模式模板+委托.pdf

    模板模式是一种行为设计模式,它使你能在不破坏封装性的前提下,定义一系列算法的族,每一种算法都由一个方法来实现。这种类型的设计模式属于行为模式。 模板模式的关键在于一个抽象类(或接口)定义了算法的主要...

    用工厂方法模式重构简易计算器 源代码+实验报告

    《工厂方法模式在简易计算器重构中的应用》 在软件工程中,设计模式是解决常见问题的模板,它们为程序员提供了一种标准化的解决方案。工厂方法模式(Factory Method Pattern)是面向对象设计模式的一种,它在实际...

    学习php设计模式 php实现模板方法模式

    模板方法模式是面向对象设计模式的一种,主要用于定义一个算法的框架,允许子类在不改变算法整体结构的情况下,自定义算法的某些特定步骤。这种模式遵循开闭原则,即对扩展开放,对修改关闭。 首先,我们要理解模式...

    TemplateMethodJava:关于如何在Java中使用模板方法模式,组合使用和继承的简单示例

    在这个名为"TemplateMethodJava"的项目中,开发者提供了一个简单的示例来展示如何在Java中应用模板方法模式,同时结合了组合和继承的使用。通过这种方式,我们可以看到如何通过代码结构来展示这两种强大的编程概念。...

    设计模式模方法模式PPT学习教案.pptx

    《模板方法设计模式详解》 模板方法设计模式是面向对象设计模式中的一种行为模式,它允许在父类中定义一个算法的框架,而将一些步骤的实现延迟到子类中。这种模式通常用于代码复用,特别是在有多个相似类,但它们在...

    1关于简单目标识别与意图分析的机器学习实战研究(模板匹配)1

    本文将深入探讨如何利用机器学习技术,特别是模板匹配方法,来解决简单目标识别与意图分析的问题。我们将通过一个军事实例,即基于无人机或卫星图像分析敌军坦克集团的作战意图,来阐述这一过程。 首先,我们需要...

    模式识别决策方法

    最后,模板匹配(Template Matching)是一种简单直接的模式识别方法,主要用于图像处理。该方法将查询图像(模板)与待检测区域逐像素比较,计算相似度,以确定是否存在匹配。通常采用的方法有绝对差值、平方差值或...

    模式识别模板匹配法PPT学习教案.pptx

    模板匹配法是模式识别的一种简单而直观的方法,尤其适用于处理结构化数据。在这个PPT学习教案中,我们将深入探讨模板匹配法的基本概念、原理及其应用。 首先,模板匹配法可以被视为一种统计决策方法的特殊情况,它...

    状态及模板和迭代等设计模式及实现

    在给定的标题“状态及模板和迭代等设计模式及实现”中,提到了三种经典的设计模式:状态模式、模板模式和迭代器模式。这些模式都是软件工程中常用的设计策略,旨在提高代码的可复用性、可读性和可维护性。 **状态...

    spring模板方法.zip

    模板方法设计模式是面向对象设计模式的一种,它在Spring框架中被广泛应用于简化代码和实现可扩展性。在Spring Boot中,模板方法模式通常体现在各种模板类中,如RestTemplate、JdbcTemplate等,它们提供了一种标准的...

    策略模式工厂方法模式观察者模式

    本资源主要涵盖了三种经典的设计模式:策略模式、工厂方法模式以及观察者模式,对于初学者来说是非常有价值的学习资料。 **策略模式**是一种行为设计模式,它使你能在运行时改变对象的行为。在策略模式中,一个类的...

    ReactJs官方学习模板

    "ReactJs官方学习模板" 提供了一个基础的起点,帮助初学者更好地理解和实践 ReactJS 的核心概念。 在这个模板中,你将找到以下关键知识点: 1. **React组件**:React 应用是由多个组件构成的,每个组件都是独立的...

    php模板学习,通过它知道了模板的原理|学习代码分离

    在PHP开发中,模板技术是一种将业务逻辑与页面展示分离的重要方法,它的核心目标是让开发者专注于编写程序逻辑,而设计师则可以独立地设计和修改页面样式,提高工作效率,提升代码可读性和维护性。本篇文章将深入...

    手写数字识别之模板匹配法_模式识别_memorylmg_Vc_手写数字识别_

    但本文主要关注基于模板匹配的简单实现,这是一种相对直观且易于理解的方法。 总的来说,"手写数字识别之模板匹配法"是通过在已知的数字模板库中寻找最佳匹配,实现对手写数字的自动识别。Visual C++结合OpenCV库,...

    简易试卷模板(word)

    《简易试卷模板(Word)制作指南》 在教育领域,试卷是评估学生学习成效的重要工具。一份精心设计的试卷能够准确地反映出教学目标,而使用Word制作试卷则因其简便快捷而受到广大教师的青睐。本篇文章将详细介绍如何...

    简单工厂模式、工厂模式、抽象工厂模式案例(C++实现)

    在这个压缩包中,包含了三种工厂模式的C++实现:简单工厂模式、工厂方法模式以及抽象工厂模式。让我们一一探讨这些模式。 1. 简单工厂模式: 简单工厂模式是一种静态工厂方法,它提供一个公共的工厂类来创建对象。...

    java设计模式学习笔记,以及各种模式的代码实现

    简单工厂模式、工厂方法模式和抽象工厂模式是其三种主要形式。 3. **抽象工厂模式**:在工厂模式的基础上更进一步,允许创建一系列相关的对象家族,而无需明确指定它们的具体类。 4. **构造器模式**(也称为建造者...

Global site tag (gtag.js) - Google Analytics