模版模式 (Template Pattern) – 热爱改变生活
我的GitHub GitHub |     登录
  • If you can't fly, then run; if you can't run, then walk; if you can't walk, then crawl
  • but whatever you do, you have to keep moving forward。
  • “你骗得了我有什么用,这是你自己的人生”
  • 曾有伤心之地,入梦如听 此歌

模版模式 (Template Pattern)

Code sinvader 3186℃ 0评论

BaseClass

[codesyntax lang=”java”]

public abstract class BaseClass {
	public final void create(){
		boilWater();
		brew();
		putInto();
		addCoundiments(); 
		if (hook()) {
			System.out.println("钩子调用了");
		}
	}
	public abstract void addCoundiments();
	public abstract void brew();
	public void boilWater(){
		System.out.println("开始烧水");
	}
	public void putInto(){
		System.out.println("放入杯子");
	}
	public boolean hook(){
		return true;
	}
}

[/codesyntax]

Tea

[codesyntax lang=”java”]

public class Tea extends BaseClass {
	@Override
	public boolean hook() {
		System.out.println("取消钩子的调用");
		return false;
	}

	@Override
	public void addCoundiments() {
		System.out.println("茶中添加了盐");
	}

	@Override
	public void brew() {
		System.out.println("将水倒入了茶中");
	}
	@Override
	public void boilWater() {
		System.out.println("开始烧水了");
	}
}

[/codesyntax]

Coffee

[codesyntax lang=”java”]

public class Coffee extends BaseClass{


	@Override
	public void addCoundiments() {
		System.out.println("咖啡中添加了盐");
	}

	@Override
	public void brew() {
		System.out.println("将水倒入了咖啡中");
	}
	@Override
	public void putInto() {
		System.out.println("放入杯子了");
	}
}

[/codesyntax]

调用

[codesyntax lang=”java”]

public class MainClass {
	public static void main(String[] args) {
		new Tea().create();
		System.out.println("-----------------------");
		new Coffee().create();
	}
}

[/codesyntax]

运行结果:

[codesyntax lang=”php”]

开始烧水了
将水倒入了茶中
放入杯子
茶中添加了盐
取消钩子的调用
-----------------------
开始烧水
将水倒入了咖啡中
放入杯子了
咖啡中添加了盐
钩子调用了

[/codesyntax]

原文地址,自己尝试之后觉得这么写太好了~

http://meigesir.iteye.com/blog/1506484

¥ 有帮助么?打赏一下~

转载请注明:热爱改变生活.cn » 模版模式 (Template Pattern)


本博客只要没有注明“转”,那么均为原创。 转载请注明链接:sumile.cn » 模版模式 (Template Pattern)

喜欢 (3)
发表我的评论
取消评论
表情

如需邮件形式接收回复,请注册登录

Hi,你需要填写昵称和邮箱~

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址