zoukankan      html  css  js  c++  java
  • 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. 当不变的和可变的行为在方法的子类实现中混在一起的时候,不变的行为在子类中重复出现,我们通过模板方法模式把这些行为搬移到单一的地方,这样就帮助子类摆脱重复的不变行为的纠缠。
  • 相关阅读:
    Android OpenGL ES 2.0 (四) 灯光perfragment lighting
    Android OpenGL ES 2.0 (五) 添加材质
    冒泡排序函数
    javascript object 转换为 json格式 toJSONString
    Liunx CentOS 下载地址
    jquery 图片切换特效 鼠标点击左右按钮焦点图切换滚动
    javascript 解析csv 的function
    mysql Innodb Shutdown completed; log sequence number解决办法
    Centos 添加 yum
    javascript 键值转换
  • 原文地址:https://www.cnblogs.com/lilongsheng1125/p/4978588.html
Copyright © 2011-2022 走看看