简单_模板方法模式(Template Method)




以“见人说人话见鬼说鬼话”来理解模板方法模式:

package design.templateMethod2;

/**
 * @author 作者 E-mail: [email protected]
 * @version 创建时间:2012-2-4 下午08:21:37 <br>
 * 
 */
public class Test {
	public static void main(String[] args) {
		/*
		 * 模板方法模式(Template Method)
		 * 俗话说,见人说人话见鬼说鬼话,其实就是模版方法模式的最好理解。
		 * 模版方法模式其实就是在抽象类或接口中定义一个骨架,然后不同的子类有自己的实现。
		 * 模版方法模式和方法工厂模式有相似之处,方法工厂模式在抽象部分定义好创建产品的骨架,然后不同的
		 * 子类有各自的实现,那么可以这么看:
		 * 方法工厂模式是对创建产品的抽象;
		 * 模版方法模式是对具体实现的抽象;
		 * AbstractList.get()、ThreadPoolExecutor.Worker是模版方法模式在JDK中的体现。
		 * 
		 * don't call us, we'll call u(不要来找我,我会去找你的)说的就是模版方法模式,
		 * 也体现了反向控制的思想,像IOC控制反转也是这种思想的体现。
		 */
		Template say = new SayPersonTalk();
		say.say();

		say = new SayGhostTalk();
		say.say();
	}
}

package design.templateMethod2;

/**
 * @author 作者 E-mail: [email protected]
 * @version 创建时间:2012-2-4 下午08:22:00 <br>
 * 说话模版
 */
public abstract class Template {
	public abstract void say();
}

package design.templateMethod2;

/**
 * @author 作者 E-mail: [email protected]
 * @version 创建时间:2012-2-4 下午08:23:15 <br>
 * 说人话
 */
public class SayPersonTalk extends Template {

	@Override
	public void say() {
		System.out.println("说人话。。。");
	}

}

package design.templateMethod2;

/**
 * @author 作者 E-mail: [email protected]
 * @version 创建时间:2012-2-4 下午08:24:04 <br>
 * 说鬼话
 */
public class SayGhostTalk extends Template {

	@Override
	public void say() {
		System.out.println("说鬼话。。。");
	}

}

猜你喜欢

转载自jqsl2012.iteye.com/blog/1393538