模板方法模式

 

一、定义

一个模板方法用一些抽象的操作定义一个算法,而子类将重定义这些操作以提供具体行为。

二、意图

定义了在一个操作中的算法框架,把一些步骤推迟到子类去实现。模板方法模式让子类不需要改变算法结构而重新定义特定的算法步骤。

具体来说,就是假设有一个work方法,其中有步骤:1.准备 2.实施 3.结束,那么work就是算法的一个框架。假设这个work方法中的步骤 “1.准备阶段” 已经在定义方法时实现了,而“ 2.实施阶段” 由于每个人的方式不同,所以定义为抽象的,留给其具体的子类去实现。对于不同的员工子类来说,只要实现其中的“2.实施”就可以了,而不需要去改变整个算法的流程框架。

三、实例

 

 

public class TemplateDemo {

	public static void main(String[] args) {
		Teacher t1 = new DBTeacher();
		t1.work();
		Teacher t2 = new JavaTeacher();
		t2.work();
	}
}

abstract class Teacher{
	public void prepared(){
		System.out.println("准备上课");
		System.out.println("打开投影仪");
	}
	
	private void end() {
		System.out.println("关闭投影仪");
		System.out.println("下课");
	}
	
	//模板方法
	public void work(){
		//1.授课前准备
		prepared();
		//2.进行授课
		teaching();
		//3.授课结束
		end();
	}

	//留给子类实现
	public abstract void teaching();
}

class DBTeacher extends Teacher{
	//对模板方法的抽象方法实现
	public void teaching(){
		System.out.println("打开数据库");
		System.out.println("编写SQL指令");
	}
}

class JavaTeacher extends Teacher{
	//对模板方法的抽象方法实现
	public void teaching(){
		System.out.println("打开MyEclipse");
		System.out.println("编写一个Java程序");
	}
}

 

 

四、总结

模板方法模式即预先设计好一个模板,其中的步骤执行方式也设计好,只留下每个子类需要做的步骤为抽象方法(这个方法有时被

称为钩子方法),然后让子类按照早就设计好的执行过程进行。如在上面的实例中,work方法即为设定好的模板,其中的teaching

方法即为钩子方法,由于不同的老师上课时会进行不同的行动,因此要有不同的teaching方法。而在子类被使用时,也是根据创建

的不同子类对象调用不同的teaching方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值