设计模式---模版模式

  模版模式:在抽象类中定义一部分具体通用的方法的执行方式,在子类中重写方法实现,然后以抽象类中的定义方式执行。

  通俗来讲:抽象类封装不可变的代码部分,子类扩展可变代码部分。抽象类提取公用代码,子类负责实现。

  该模式的缺点:每一个实现都需要使用一个子类,导致类个数的不断增加。

  代码案例:

public abstract class Game {
	abstract void initialize();
	abstract void startPlay();
	abstract void endPlay();
	public final void play() {
		initialize();
		startPlay();
		endPlay();
	}
}

  抽象类中提取公用方法。

public class Cricket extends Game {

	@Override
	void initialize() {
		System.out.println("Cricket Game Initailzed!");
	}

	@Override
	void startPlay() {
		System.out.println("Cricket Game Started.");
		
	}

	@Override 
	void endPlay() {
		System.out.println("Cricket Game Finished.");
	}

}

子类中实现方法。

public class Football extends Game {

	@Override
	void initialize() {
		System.out.println("Football Game Initialized.");
	}

	@Override
	void startPlay() {
		System.out.println("Football Game Started!");
	}

	@Override
	void endPlay() {
		System.out.println("Football Game Finished!");
	}

}

测试类进行测试:

public class TemplatePattern {
	public static void main(String[] args) {
		Game game=new Cricket();
		game.play();
		System.out.println();
		game=new Football();
		game.play();
	}
}

最终的运行结果:

Cricket Game Initailzed!
Cricket Game Started.
Cricket Game started.

Football Game Initialized.
Football Game Started!
Football Game Finished!

看到上面的运行结果,每个子类具体实现了抽象类的方法,但是最终的整个流程或算法,仍然需要使用抽象类所定义的流程。

模版模式的使用场景:一些公共的重要的、复杂的方法,又是多个子类所共有的,可以考虑使用模版模式进行设计。




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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值