zoukankan      html  css  js  c++  java
  • 设计模式——模板方法模式(TemplateMethod Pattern)

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

    UML图:

      

    抽象模板:

    package com.cnblogs.clarck;
    
    /**
     * 抽象模板,并实现了一个模板方法。
     * 
     * @author clarck
     * 
     */
    public abstract class AbstractClass {
        public abstract void primitiveOperation1();
    
        public abstract void primitiveOperation2();
    
        /**
         * 模板方法,给出了逻辑的骨架,而逻辑的组成是一些相应的抽象操作,将具体的操作推迟到了子类实现。
         */
        public void TemplateMethod() {
            primitiveOperation1();
            primitiveOperation2();
    
            System.out.println("");
        }
    }

    实现父类的一个或多个抽象方法:

    package com.cnblogs.clarck;
    
    /**
     * 实现父类的一个或多个抽象方法
     * 
     * @author clarck
     * 
     */
    public class ConcrateClassA extends AbstractClass {
    
        @Override
        public void primitiveOperation1() {
            System.out.println("具体类A的方法1实现");
        }
    
        @Override
        public void primitiveOperation2() {
            System.out.println("具体类A的方法2实现");
        }
    
    }
    package com.cnblogs.clarck;
    
    public class ConcrateClassB extends AbstractClass {
    
        @Override
        public void primitiveOperation1() {
            System.out.println("具体类B的方法1实现");
        }
    
        @Override
        public void primitiveOperation2() {
            System.out.println("具体类B的方法2实现");
        }
    
    }

    测试类:

    package com.cnblogs.clarck;
    
    /**
     * 测试类
     * 
     * @author clarck
     * 
     */
    public class Client {
        public static void main(String[] args) {
            AbstractClass abstractClass;
            abstractClass = new ConcrateClassA();
            abstractClass.TemplateMethod();
            
            abstractClass = new ConcrateClassB();
            abstractClass.TemplateMethod();
        }
    }
  • 相关阅读:
    cae when分组统计
    查看 Chrome 下载的文件的真实下载地址
    directory opus使用教程
    文件内容极速搜索工具: silversearcher-ag
    LINUX SHELL 变量的二次引用
    JS小练习
    jQuery
    JS-BOM对象
    JS-DOM对象
    JavaScript-基础知识
  • 原文地址:https://www.cnblogs.com/tanlon/p/3413518.html
Copyright © 2011-2022 走看看