Java设计模式(14)行为型:模板方法模式

(一)模式概述

模板方法模式是指定义一个操作中算法的骨架,而将一些步骤延迟到子类中。设计者需要给出一个算法的固定步骤,并将某些步骤的具体实现留给子类来实现。具体模板实现算法细节不会改变整个算法的骨架,但注意要将各个子类公共行为提取出来集中到一个共同的父类中以避免代码重复。


(二)模式结构

1)抽象模板对象:

定义业务逻辑的基本流程,但不提供具体实现算法。

2)具体模板实现者:

继承抽象模板对象,实现具体业务函数。


(三)Demo

抽象模板对象,定义逻辑顺序并将实现过程定义为抽象方法。

public abstract class AbstractTemplate {
	String data;
	// 逻辑顺序(模式核心)
	public final void templateMethod() {
		getData();
		calcData();
		printData();
	}
	// 普通方法,可能已经实现,也可能需要子类实现
	abstract void getData();
	abstract void calcData();
	void printData() {
		System.out.println(data);
	}
}
具体模板对象实现者Template1:

public class Template1 extends AbstractTemplate {
	@Override
	void getData() {
		data = "TemplateMethod1";
	}

	@Override
	void calcData() {
		data = "do:" + data;
	}
}
具体模板对象实现者Template2:
public class Template2 extends AbstractTemplate {
	@Override
	void getData() {
		data = "TemplateMethod2";
	}

	@Override
	void calcData() {
		data = "do:" + data;
	}
}
执行过程:
AbstractTemplate template1 = new Template1();
template1.templateMethod();
AbstractTemplate template2 = new Template2();
template2.templateMethod();
执行结果:
do:TemplateMethod1
do:TemplateMethod2

(注)上例中Template1和Template2的逻辑过程是一样的,只是具体实现不同。模板方法模式使用的非常广泛,只要是逻辑顺序固定但实现不同的,都可以是使用模板方法模式。

(注)本模式的重点在于抽象模板对象必须定义整个业务逻辑基本流程,并由子类来实现,不同的子类实现同一业务逻辑流程会有不同的结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值