模版模式(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
写 春 2015-03-22
getPixels中stride的理解 2015-04-02

评论区