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)





