您的位置:首页 > 编程语言 > Java开发

Java设计模式之模板方法模式

2010-01-05 14:10 561 查看
1) AbstractClass(抽象类):定义了一到多个的抽象方法,以供具体的子类来实现它们;而且还要实现一个模板方法,来定义一个算法的骨架。该模板方法不仅调用前面的抽象方法,也可以调用其他的操作,只要能完成自身的使命。
2) ConcreteClass(具体类):实现父类中的抽象方法以完成算法中与特定子类相关的步骤。

AbstractClass.java

/**
* 东北电力大学因特雷工作室版权所有
* 开发项目组:因特雷工作室JAVA组开发
* 网址:http://itl.nedu.edu.cn
* JAVA组QQ开发群:37523769
* 联系请注明!!!
* 谢谢您的使用!!!!!!!
* 文件创建时间:2010年 2010-1-4月 下午04:13:43日
*/
package com.amly.pattern;
/**
* 类创建时间:2010年 2010-1-4月 下午04:13:43日
* @author wamly
*
*/
public abstract class AbstractClass {
/**
* 模版方法,类似HttpServlet中的service方法
* 东北电力大学因特雷工作室JAVA组
* 文件创建时间:2010年 2010-1-4月 下午04:14:39日
*/
public final void templateMethod(String methodName) {
if("op1".equals(methodName)) {
doOperation1(methodName);
}
if("op2".equals(methodName)) {
doOperation2(methodName);
}
}

protected abstract void doOperation1(String methodName);

protected abstract void doOperation2(String methodName);
}

ConcreteClass.java

/**
* 东北电力大学因特雷工作室版权所有
* 开发项目组:因特雷工作室JAVA组开发
* 网址:http://itl.nedu.edu.cn
* JAVA组QQ开发群:37523769
* 联系请注明!!!
* 谢谢您的使用!!!!!!!
* 文件创建时间:2010年 2010-1-4月 下午07:11:33日
*/
package com.amly.pattern;
/**
* 类创建时间:2010年 2010-1-4月 下午07:11:33日
* @author wamly
*
*/
public class ConcreteClass extends AbstractClass {
/* (non-Javadoc)
* @see com.amly.pattern.AbstractClass#doOperation1(java.lang.String)
*/
@Override
public void doOperation1(String methodName) {
// TODO Auto-generated method stub
System.out.println("doOperation1");
}
/* (non-Javadoc)
* @see com.amly.pattern.AbstractClass#doOperation2(java.lang.String)
*/
@Override
public void doOperation2(String methodName) {
// TODO Auto-generated method stub
System.out.println("doOperation2");
}
}

Test.java

/**
* 东北电力大学因特雷工作室版权所有
* 开发项目组:因特雷工作室JAVA组开发
* 网址:http://itl.nedu.edu.cn
* JAVA组QQ开发群:37523769
* 联系请注明!!!
* 谢谢您的使用!!!!!!!
* 文件创建时间:2010年 2010-1-4月 下午07:13:36日
*/
package com.amly.pattern;
/**
* 类创建时间:2010年 2010-1-4月 下午07:13:36日
* @author wamly
*
*/
public class Test {
public static void main(String[] args) {
AbstractClass abstractClass = new ConcreteClass();
abstractClass.templateMethod("op2");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: