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();
        }
    }
  • 相关阅读:
    Spring注解运行时抛出null
    关于apache服务器加载so的报错
    apache apr的编译和引用
    FreeSWITCH在会议室中持续播放音频文件
    64位FreeSWITCH编译安装(版本1.4.20)
    Spring整合Tiles
    eclipse启动报错eclipse failed to create the java virutal machine
    菜鸟新闻2--设置沉浸式状态栏的三种方法
    OkHttp3源码详解(三) 拦截器
    Android N(API level 24.)废弃了Html.fromHtml(String)
  • 原文地址:https://www.cnblogs.com/tanlon/p/3413518.html
Copyright © 2011-2022 走看看