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. 当不变的和可变的行为在方法的子类实现中混在一起的时候,不变的行为在子类中重复出现,我们通过模板方法模式把这些行为搬移到单一的地方,这样就帮助子类摆脱重复的不变行为的纠缠。
  • 相关阅读:
    Redis持久化
    Redis数据淘汰策略
    Redis事务
    Redis发布订阅
    WPS生成多级编号
    VMware 网络介绍
    3、Linux目录操作
    2、Shell命令学习笔记
    2、线程的状态和调度学习笔记
    1、Linux安装前的准备
  • 原文地址:https://www.cnblogs.com/lilongsheng/p/3226044.html
Copyright © 2011-2022 走看看