模板方法模式----设计模式系列

模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定的步骤。

         定义有些呆板,说说我的理解吧。父类定义实施的步骤,子类中实现具体的算法。当我们要完成在某一细节层次一直得一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时,通常考虑用模板方法木事来处理。

代码很简单的不要不要的,还有注释。直接贴啦。

(1)定义抽象模板父类

/**
 * 抽象模板,定义并实现了一个模板方法。这个模板方法一般是个<b><u><font color="blue">具体方法</font></u></b>。<br/>
 * 它给出了一个顶级逻辑的骨架。<br/>
 * 而逻辑的组成步骤在相应的抽象操作中,推迟到子类实现。<br/>
 * 顶级逻辑也有可能调用一些具体方法。
 * @author 董永康
 *
 */
public abstract class AbstractClass {

	public abstract void add();

	public abstract void sub();

	public void TemplateMethod() {
		add();
		sub();
		System.out.println(this.getClass().getName());
	}
}

(2)具体实现子类

/**
 * 具体实现类,在这里实现父类定义的一个或者多个抽象方法
 * @author 董永康
 *
 */
public class ConcreteClassA extends AbstractClass {

	@Override
	public void add() {
		System.out.println("ConcreteClassA-->add()");
	}

	@Override
	public void sub() {
		System.out.println("ConcreteClassA-->sub()");
	}

}

/**
 * 具体实现类,在这里实现父类定义的一个或者多个抽象方法
 *
 * @author 董永康
 *
 */
public class ConcreteClassB extends AbstractClass {

	@Override
	public void add() {
		System.out.println("ConcreteClassB-->add()");
	}

	@Override
	public void sub() {
		System.out.println("ConcreteClassB-->sub()");
	}

}

(3)测试类

public class Template {

	public static void main(String[] args) {
		AbstractClass  mAbstractClass = new ConcreteClassA();
		mAbstractClass.TemplateMethod();

		mAbstractClass = new ConcreteClassB();
		mAbstractClass.TemplateMethod();
	}
}

(4)输出

ConcreteClassA-->add()
ConcreteClassA-->sub()
com.dyk.template.ConcreteClassA
ConcreteClassB-->add()
ConcreteClassB-->sub()
com.dyk.template.ConcreteClassB

总结:模板方法模式是通过把不变的行为搬移到超类,去除子类中的重复代码来体现它的优势。提供了一个很好的代码复用平台。通过模板方法模式把不可变的行为搬移到父类,帮助子类拜托重复不变行为的纠缠。

下载地址:http://download.csdn.net/detail/qq_17250009/9229893

时间: 2024-10-31 19:05:50

模板方法模式----设计模式系列的相关文章

工厂模式----设计模式系列

本文采用了三种工厂模式 简单工厂模式 工厂方法模式 应用反射实现工厂模式 存放说明如下: com.dyk : 包含main方法的测试类 com.dyk.factory : 三种工厂类(具体工厂类的接口或者具体的工厂类) com.dyk.factory.impl : 工厂类的具体实现 com.dyk.operate :  具体运算类的父类 com.dyk.operate.impl : 具体的运算类 一.简单工厂模式      这里需要用到五个类,分别是:OperationFactory.Opera

代理者模式----设计模式系列

<pre code_snippet_id="1580901" snippet_file_name="blog_20160217_1_7167142" name="code" class="java">代码注释很清晰就不罗嗦了 public interface iGiveGift { void GiveFlowers(); void GiveShoes(); } <pre name="code&quo

C# 设计模式系列教程-模板方法模式_C#教程

1. 概述 定义一个操作中的算法的骨架,而将步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤. 2. 模式中的角色 2.1 抽象类(AbstractClass):实现了模板方法,定义了算法的骨架. 2.2 具体类(ConcreteClass):实现抽象类中的抽象方法,已完成完整的算法. 3. 模式解读 3.1 模板方法类图 3.2 模板方法模式代码实现 /// <summary> /// 抽象类 /// </summary> public ab

C++设计模式之模板方法模式_C 语言

前言 离开了自己工作了将近两年的公司,日子不再有了忙碌,可以闲下来,躺在家里的床上,想着以后的路怎么走,说实话,真的很迷茫,从2012年毕业到现在,时间不长,但是学到的东西真的是非常有限,一直从事于Windows平台上的开发.说到Windows平台的开发,大家都肯定知道的HOOK的,即使不知道HOOK,对于COM应该也是知道的,我的系列博文中也对COM进行过全面的总结.说白了,HOOK就是在执行某个功能时,会有一个一系列的执行过程,对于这个过程一般都是固定的,比如:第一步执行什么,第二步干什么,

Head First设计模式之模板方法模式

一.定义 在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变算法结构的情况下,重定义该算法中的某些特定步骤. 比较通俗的说法,子类决定如何实现算法中的某些步骤,比如两个一连串的操作,操作次序是一样的,有的操作相同,有的不同,将两个连串操作抽象出父类: 子类在相同次序,但具体方法不一样的操作 在父类抽象出来,然后在子类重写实现,达到减少重复代码.   二.结构 三.实现 以下以泡茶和泡咖啡为例子 namespace DesignPatterns.Template { //

重温设计模式(七)——模板方法模式

1.摘要 在本文中,我们来对模板方法模式做一个全面的了解. 2.求职简讯 呵呵,如果各位不介意,希望在这里做一个求职的广告. 语言方向:Java/C#/VB,语言熟悉程度降序排列. 求职方向:开发,测试等与IT相关工作. 月薪要求:1000元以上 工作地点:北京 3.开门见山 模板方法,定义一个操作中算法骨架,而将一些步骤延迟到子类中去实现. 让我们先来看看模板方法的示意图: 这个模式的本身很容易理解,我就不自己去画了. 我们看到这个模式的关键在于父类中的TemplateMethod()方法,正

传统设计模式(八)模板方法模式

模板方法定义了一个算法的步骤,并允许子类为一个或多个步骤提供实现. 普通的设计算法由实现类直接控制,在很多功能类似的对象中存在重复.并且由于类的组织方式不具有弹性,所以往往新加入新的相似模块时需要作大量冗余的步骤. 我们还是那电商的订单提交来说事 ~ ~ /// <summary> /// 模板类 /// </summary> public abstract class OrderSubmit { public OrderSubmit() { //检查购物车 CheckCart()

hand first设计模式 -模板方法模式

模板方法模式 : 在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以在不改变算法结构的情况下,重新算法.重新定义算法中的某些步骤. 咖啡因饮料超类 Java代码 /** * 咖啡因饮料超类 * @author panxiuyan * */ public abstract class CaffeinBeverage { /** * 制作方法 */ public void perareRecip() { boilWater(); brew(); pourInCup();

Android设计模式系列之工厂方法模式_Android

工厂方法模式,往往是设计模式初学者入门的模式,的确,有人称之为最为典型最具启发效果的模式. android中用到了太多的工厂类,其中有用工厂方法模式的,当然也有很多工厂并不是使用工厂方法模式的,只是工具管理类. 今天以ThreadFactory举例说明一下简单工厂模式和工厂方法模式. 工厂方法模式,Factory Method,简单的方式,不简单的应用. 1.意图 定义一个用于创建对象的接口,让子类决定实例化哪个类.工厂方式模式使一个类的实例化延迟到其子类. 热门词汇:虚构造器 延迟 创建对象