设计模式之模板方法模式

    模板方法模式用于行为的封装,模板规定了一系列方法的执行顺序,要求子类去具体实现这一系列方法,最后不同的子类具有不同的实现,但都完成了模板规定的一系列动作;

下面以活期存款与定期存款的收益,简单的模拟下这个设计模式的使用;

抽象模板:

public abstract class TopTemplate {
	public void calculate(Double money){
		first(money);
		second(money);
	}
	public abstract void first(Double money);
	public abstract void second(Double money);
}

活期存款:

public class CurrentSavings extends TopTemplate{

	@Override
	public void first(Double money) {
		System.out.println("本金加利息:"+money*1.1);
	}

	@Override
	public void second(Double money) {
		System.out.println("活期储蓄不分红");
	}
	
}
定期存款:
public class RegularSavings extends TopTemplate{

	@Override
	public void first(Double money) {
		System.out.println("本金加利息:"+money*1.2);
	}

	@Override
	public void second(Double money) {
		System.out.println("存款满一年分红"+money*1.2*0.1);
	}
	
}

Client类:

public class Client {
	public static void main(String[] args) {
		TopTemplate tt1 = new CurrentSavings();
		TopTemplate tt2 = new RegularSavings();
		tt1.calculate(1000D);
		System.out.println("=========");
		tt2.calculate(1000D);
	}
}

结果:

本金加利息:1100.0
活期储蓄不分红
=========
本金加利息:1200.0
存款满一年分红120.0

可以看到,父类一定是抽象方法,子类一定实现抽象方法,两个子类执行方法的顺序是在抽象父类中规范好的;

与外观模式比较发现, 外观模式是对一系列对象的封装, 模板方法模式是对一系列行为的封装,他们的侧重点不同,但是他们的思路是很相近的,可以比较着进行记忆;

值得注意的是java中Servlet是典型的模板方法模式


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值