zoukankan      html  css  js  c++  java
  • 设计模式(10)-----模板方法模式

    模板方法模式(Template Method)

    定义

      定义了一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

    UML类图

      

    例子

      AbstractClass

    package com.csdhsm.pattemdesign.template;
    
    /**  
     * @Title:  Templete.java   
     * @Description: 模板父类,包含子类相同部分,子类自己完成的部分
     * @author: Han   
     * @date:   2016年6月21日 下午10:03:44  
     */  
    public abstract class Templete {
    
        //每个子类相同的执行方法
        public void topOperation() {
            beforeOperation();
            operation();
            afterOperation();
        }
        
        //每个子类不同的地方,延迟到子类去完成
        public abstract void operation();
        
        //已经定义好的方法,写在父类,避免重复
        private final void beforeOperation() {
            System.out.println("This acton before the operation!");
        }
    
        private final void afterOperation() {
            System.out.println("This acton after the operation!");
        }
    }

      模板方法1

    package com.csdhsm.pattemdesign.template;
    
    /**  
     * @Title:  TempleteMethod1.java   
     * @Description: 模板方法1
     * @author: Han   
     * @date:   2016年6月21日 下午10:01:35  
     */  
    public class TempleteMethod1 extends Templete {
    
        @Override
        public void operation() {
            System.out.println("I`m Templete Method 1");
        }
    }

      模板方法2

    package com.csdhsm.pattemdesign.template;
    
    /**  
     * @Title:  TempleteMethod2.java   
     * @Description: 模板方法2
     * @author: Han   
     * @date:   2016年6月21日 下午10:02:02  
     */  
    public class TempleteMethod2 extends Templete {
    
        @Override
        public void operation() {
            System.out.println("I`m Templete Method 2");
        }
    }

      客户端

    package com.csdhsm.pattemdesign.template;
    
    public class Solution {
        public static void main(String[] args) {
            
            Templete templete1 = new TempleteMethod1();
            Templete templete2 = new TempleteMethod2();
            
            templete1.topOperation();
            templete2.topOperation();
        }
    }

      结果

      OK,成功。

    总结

      模板方法模式是通过把不变的行为搬移到父类(原则:不写一句重复的代码),出去子类中的重复代码,体现优势。模板方法提供了一个很好的代码服用的模板。

  • 相关阅读:
    Javascript 创建对象的三种方法及比较【转载+整理】
    Firebug Console Panel 控制台详解【转载+整理】
    解剖 CPU(另)
    解剖 CPU
    关于 URL 编码及 JavaScript 编码函数【转载+整理】
    基于用户投票的 6 个排名算法【转载+整理】
    奥巴马筹款网站的制作过程【转载+整理】
    CentOS 7.0关闭默认firewall防火墙启用iptables防火墙
    mybatis-generator 代码自动生成工具
    Linux中启动和停止jar包的运行
  • 原文地址:https://www.cnblogs.com/a294098789/p/5605194.html
Copyright © 2011-2022 走看看