[img]http://dl.iteye.com/upload/attachment/0062/7369/0050e697-6914-382b-8990-95dc86b9c968.bmp[/img]
以“见人说人话见鬼说鬼话”来理解模板方法模式:
以“见人说人话见鬼说鬼话”来理解模板方法模式:
package design.templateMethod2;
/**
* @author 作者 E-mail: jqsl2012@163.com
* @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: jqsl2012@163.com
* @version 创建时间:2012-2-4 下午08:22:00 <br>
* 说话模版
*/
public abstract class Template {
public abstract void say();
}
package design.templateMethod2;
/**
* @author 作者 E-mail: jqsl2012@163.com
* @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: jqsl2012@163.com
* @version 创建时间:2012-2-4 下午08:24:04 <br>
* 说鬼话
*/
public class SayGhostTalk extends Template {
@Override
public void say() {
System.out.println("说鬼话。。。");
}
}