设计模式之模板模式

1.模板方法定义: 定义一个操作中的算法框架,而将一些步骤延迟到子类中。这样使得子类可以不改变一个算法的结构即可从定义该算法的某些特定步骤。Define the skeleton of an algorithm in an operation, deferring some steps to subclass. Template Method lets subclass redefine certain steps of an algorithm without changing the algoritms's structure.

2.简单示例代码

public abstract class TemplateC {

	public abstract void Yunqiu();
	public abstract void Guoren(); //算法的具体步骤延迟到子类实现。
	public abstract void Toulan();
	
	public final void getScore()   //定义算法骨架. 为了防止算法骨架被修改 此处可以定义为final
	{
		System.out.print("我首先");
		Yunqiu();
		System.out.print("我然后");
		Guoren();
		System.out.print("我最后");
		Toulan();
	}
	
}
public class TemplateSubC extends TemplateC{

	@Override
	public void Yunqiu() {          //子类实现具体算法
		// TODO Auto-generated method stub
		System.out.println("用左手运球");
	}

	@Override
	public void Guoren() {
		// TODO Auto-generated method stub
		System.out.println("转身过人");
	}

	@Override
	public void Toulan() {
		// TODO Auto-generated method stub
		System.out.println("后仰跳投");
	}

}
我首先用左手运球
我然后转身过人
我最后后仰跳投

3. 模板方法的优点: 封装不变的部分,扩展可变的部分。封装了一个具体算法结构(执行顺序),然后具体算法可以由不同子类实现,使得子类可以根据具体情况扩展。

缺点:子类执行结果影响了父类的结果,在复杂项目中,会带来代码阅读的难度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值