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");
}
}
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");
}
}
相关文章推荐
- JAVA-设计模式之模板方法模式
- java设计模式---模板方法模式(Template pattern)
- Java模板方法设计模式
- Java设计模式--模板方法模式
- Java设计模式菜鸟系列(十)模板方法模式建模与实现
- 浅谈JAVA设计模式之——模板方法(TemplateMethod)
- java_设计模式_模板方法模式_Template Method Pattern(2016-08-11)
- Java设计模式透析之 —— 模板方法(Template Method)
- JAVA学习--模板方法设计模式
- JAVA学习--模板方法设计模式
- 设计模式之模板方法模式(Java实现)
- Java 设计模式--模板方法(Template Method)
- Java设计模式之模板方法模式(Template Method)
- Java设计模式之模板方法模式(Template Method)
- Java设计模式之模板方法模式
- Java设计模式——命令模式、模板方法、迭代器和组合模式
- Java设计模式之十:模板方法模式(Template Method)
- [译]Java 设计模式 之模板方法
- java与设计模式(一)模板方法设计模式
- java设计模式---模板方法