J2EE (四) Servlet 模板方法模式

  1.  在JAVA中用到了很多设计模式,我们常用的Servlet类利用了一个模板方法来实现,在处理客户端请求时不用管是具体调用了POST或GET请求,这个类会自己进行判断,具体实现需要我们自己实现。
  2. 它是应用于这样一种场景,当我们要完成某一细节层次一致的一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时,我们通常考虑用模板方法模式来处理.
    1. 比如在Servlet类的实现上,里面有很多的方法doPost()/doGet()等等,它们之间的调用顺序已经被定义好了,具体的实现由它的子类来实现。因为每个请求是不同的但它们调用的方法相同,不同的实现由子类来完成。
  1. Java 代码
    1. package com.bjpowernode.pattern;
      /**
       * 抽象类,模板
       * @author LLS
       *
       */
      public abstract class AbstractClass {
      	
      	public static final String METHOD_1="m1";
      	public static final String METHOD_2="m2";
      	//模板方法
      	public final void templateMethod(String methodName)
      	{
      		if (METHOD_1.equals(methodName)) {
      			doOperater1(methodName);
      		}
      		if (METHOD_2.equals(methodName)) {
      			doOperater2(methodName);
      		}	
      	}
      	//具体方法1
      	protected abstract void doOperater1(String methodName);
      	//具体方法2
      	protected abstract void doOperater2(String methodName);
      }
    2. package com.bjpowernode.pattern; /**  * 具体实现类  * @author LLS  *  */ public class ConcreteClass extends AbstractClass {

       @Override  protected void doOperater1(String methodName) {   System.out.println("concrete--operater1"+methodName);  }

       @Override  protected void doOperater2(String methodName) {   System.out.println("concrete--operater1"+methodName);  }

      }

    3.  

      package com.bjpowernode.pattern;

      public class test {

       /**   * 测试模板方法   * @param args   */  public static void main(String[] args) {   AbstractClass a=new ConcreteClass();   a.templateMethod(AbstractClass.METHOD_1);  }

      }

       

  1.  模板方法模式是通过把不变的行为搬到超类,去除子类中的重复代码来体现它的优势 。 它提供了一个很好的代码服用平台,因为有时候我们会遇到由一系列步骤构成的过程需要执行,从这个过程高层次看是相同的,但有些步骤的实现可能不同。
  1. 当不变的和可变的行为在方法的子类实现中混在一起的时候,不变的行为在子类中重复出现,我们通过模板方法模式把这些行为搬移到单一的地方,这样就帮助子类摆脱重复的不变行为的纠缠。
原文地址:https://www.cnblogs.com/lilongsheng/p/3226044.html