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

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");
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值