频道栏目
首页 > 程序开发 > 软件开发 > 其他 > 正文
设计模式之模板方法模式
2017-03-11 09:29:23         来源:Ade-rui的博客  
收藏   我要投稿

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

简单点说:有一组流程要执行,流程中只有一个步骤是未知的,它前后的其余步骤都是固定的,我们就将这一步骤延迟到具体的子类去实现,以达到通用代码的抽象封装。

假设有一个考试的父类:

/**
 * 考试
 * @author PC
 *
 */
public abstract class Exam {

	/**
	 * 考试
	 */
	public final void exam(){
		enter();
		startExam();
		exit();	}

	/**
	 * 进入考场
	 */
	protected void enter() {
		System.out.println("进入考场..");
	}
	
	/**
	 * 具体进行考试
	 */
	protected abstract void startExam() ;
	
	/**
	 * 离开考场
	 */
	protected void exit(){
		System.out.println("离开考场...");
	}
}

进入考场和离开考场是所有考试行为的通用逻辑,而具体是考什么试,如何考得根据具体子类去决定,

假如是学生的话:

/**
 * 学生考试
 * @author PC
 *
 */
public class Student extends Exam{

	@Override
	protected void startExam() {
		System.out.println("学生考试做卷子..");
	}
	
}
假如是考驾照的话 :
/**
 * 考驾照
 * @author PC
 *
 */
public class License extends Exam{

	@Override
	protected void startExam() {
		System.out.println("开始开车过关..");
	}

}
调用端:
public class Client {

	public static void main(String[] args) {
		new Student().exam();
		new License().exam();
	}
	
}
结果:
进入考场..
学生考试做卷子..
离开考场...
进入考场..
开始开车过关..
离开考场...

有人可能会疑惑:那这个模板方法和上次的工厂方法或者抽象工厂有什么区别。。?感觉都是定义了个抽象方法,让子类去实现。

区别:

模板方法侧重的是在一个固定的执行流程中,其中的一步让子类去实现,侧重执行流程,比如Activity的onCreate,onStart等方法。

工厂方法和抽象工厂都是侧重创建对象。

点击复制链接 与好友分享!回本站首页
上一篇:公约数、公倍数
下一篇:spring+maven+ActiveMQ+dubbo
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站