模版模式(Template Pattern)

无简介

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

-------------本文结束  感谢您的阅读-------------
下次一定