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)