模版方法( Template Method) Java

原创 2016年06月01日 10:25:31


定义:

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


通过吧不变的行为搬移到父类,去掉子类重复代码。



类结构图:



TestPaper

package ding.study.designpatterns.templatemethod;

/**
 * 问卷模版 和答题模板
 * 
 * @author daniel
 * @email 576699909@qq.com
 * @time 2016-6-1 上午10:15:08
 */
public abstract class TestPaper {

	/**
	 * 题目一
	 * 
	 * @author daniel
	 * @time 2016-6-1 上午10:15:25
	 */
	public void testQuestion1() {
		System.out.println("题目一");
		System.out.println("答案:" + getAnswer1());
	}

	/**
	 * 答案一
	 * 
	 * @author daniel
	 * @time 2016-6-1 上午10:15:31
	 * @return
	 */
	protected String getAnswer1() {

		return "";
	}

	/**
	 * 题目二
	 * 
	 * @author daniel
	 * @time 2016-6-1 上午10:15:44
	 */
	public void testQuestion2() {
		System.out.println("题目二");
		System.out.println("答案:" + getAnswer2());
	}

	/**
	 * 答案二
	 * 
	 * @author daniel
	 * @time 2016-6-1 上午10:15:51
	 * @return
	 */
	protected String getAnswer2() {
		return "";
	}
}

TestPaperXiaoHong

package ding.study.designpatterns.templatemethod;
/**
 * 晓红的答卷
 * @author daniel
 * @email 576699909@qq.com
 * @time 2016-6-1 上午10:17:37
 */
public class TestPaperXiaoHong  extends TestPaper {
	/**
	 * 重写父类方法
	 */
	public String getAnswer1() {
		return "c";
	}

	public String getAnswer2() {
		return "d";
	}
}

TestPaperXiaoMing

package ding.study.designpatterns.templatemethod;

/**
 * 小名的卷子答卷
 * 
 * @author daniel
 * @email 576699909@qq.com
 * @time 2016-6-1 上午10:17:02
 */
public class TestPaperXiaoMing extends TestPaper {
	/**
	 * 重写父类方法
	 */
	public String getAnswer1() {
		return "a";
	}

	public String getAnswer2() {
		return "b";
	}
}

Main调用

package ding.study.designpatterns.templatemethod;
/**
模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
优点

通过吧不变的行为搬移到父类,去掉子类重复代码。
 * 
 * @author daniel
 * @email 576699909@qq.com
 * @time 2016-6-1 上午10:18:55
 */
public class ZTestMain {

	/**
	 * @author daniel
	 * @time 2016-6-1 上午10:18:00
	 * @param args
	 */
	public static void main(String[] args) {
		   System.out.println("小名问卷答案:");
		   TestPaper studentA=new TestPaperXiaoMing();
		   studentA.testQuestion1();
		   studentA.testQuestion2();
		   System.out.println("晓红问卷答案:");
		   TestPaper studentB=new TestPaperXiaoHong();
		   studentB.testQuestion1();
		   studentB.testQuestion2();
	}

}



输出结果:




源代码:

https://github.com/dingsai88/StudyTest/tree/master/src/ding/study/designpatterns/templatemethod




















版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

java设计模式八--Template Method(方法模版模式)

一. 模式概述   摸板方法(Template Method)模式是一种非常简单而又经常使用的设计模式.先创建一个父类,把其中的一个或多个方法    留给子类去实现,这实际上就是在使用摸板模式.所...

JAVA--模版方法模式(Template Method)--设计模式十四

1,概述:        (1)模版方法模式的意图是在一个方法里实现一个算法,并推迟定义算法的某些步骤, 从而让其他类重新定义他们              ...

Python实现设计模式--04.模版方法模式(Template Method Pattern)

模版方法模式是设计模式中比较好理解的一种模式,

设计模式: 8. 模版方法模式(Template Method)

1. 介绍1.1 针对的问题 不同程序员间随意设计某个功能需要应对不同情况进行多个实现, 但是不同的程序员设计会导致每个情况程序设计的风格差很多, 还很不规范. 重复设计严重有些设计在不同场合是可以复...

设计模式系列之四_策略模式 和 模版方法模式(Template method)

1.策略模式 1.1 策略模式   策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。 策略模式让算法独立于使用它的客户而独立变化。   策略模式属于对象的行为模式...

设计模式 笔记 模版方法模式 Template Method

//---------------------------15/04/28---------------------------- //TemplateMethod 模版方法模式--...

C++设计模式之十一--Template_Method模版方法模式

转自:http://www.cnblogs.com/wanggary/archive/2011/04/15/2016619.html       模板模式也是相当简单的一种模式,而且是比较常用...

23种设计模式(13)_行为型_模版方法模式(Template Method)

定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重定义该算法中的某些特定步骤。这就是模版方法模式。大部分刚步入职场的毕业生应该都有类似B的经历。一个复杂的任务,由公...

第15章 模版方法模式(Template Method)

摘要:Template Method模式是比较简单的设计模式之一,但它却是代码复用的一项基本的技术,在类库中尤其重要。   主要内容 1.概述 2.Template Method解说 3.....

Template Method Pattern 模版方法模式

今天我要在这里介绍的是C#设计模式中的模版方法模式。   问题:现在有一家汽车生产商需要一个管理汽车生产的管理软件。其中在该系统中有一个管理组装汽车的子模块。该模块要能根据不同的汽车类型来组装相...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)