简单_模板方法模式(Template Method)
以“见人说人话见鬼说鬼话”来理解模板方法模式:
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 {@Overridepublic 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 {@Overridepublic void say() {System.out.println("说鬼话。。。");}}