zoukankan      html  css  js  c++  java
  • 模板方法模式TemplateMethod

    原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11407071.html

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

    2. 结构图

    AbstractClass:抽象类。用来定义算法骨架和原语操作,具体的子类通过重定义这些原语操作来实现一个算法的各个步骤。在这个类里面,还可以提供算法中通用的实现。
    ConcreteClass:具体实现类。用来实现算法骨架中的某些步骤,完成与特定子类相关的功能。

    3. 本质
    模板方法模式的本质:固定算法骨架。

    4. Code Demo

    AbstractClass.java

     1 package org.fool.dp.templatemethod;
     2 
     3 public abstract class AbstractClass {
     4     public void template() {
     5         this.method1();
     6         this.method2();
     7         this.method3();
     8     }
     9 
    10     public abstract void method1();
    11 
    12     public abstract void method2();
    13 
    14     public abstract void method3();
    15 }

    ConcreteClass.java

     1 package org.fool.dp.templatemethod;
     2 
     3 public class ConcreteClass extends AbstractClass {
     4     @Override
     5     public void method1() {
     6         System.out.println("step 1");
     7     }
     8 
     9     @Override
    10     public void method2() {
    11         System.out.println("step 2");
    12     }
    13 
    14     @Override
    15     public void method3() {
    16         System.out.println("step 3");
    17     }
    18 }

    Client.java

    1 package org.fool.dp.templatemethod;
    2 
    3 public class Client {
    4     public static void main(String[] args) {
    5         AbstractClass ac = new ConcreteClass();
    6 
    7         ac.template();
    8     }
    9 }
  • 相关阅读:
    JAVA之代理2CGLib
    Java并发编程:Lock
    synchronized详解
    redis哨兵机制--配置文件sentinel.conf详解
    redis.conf讲解
    [Java并发包学习八]深度剖析ConcurrentHashMap
    [Java并发包学习七]解密ThreadLocal
    T和Class以及Class的理解
    python学习笔记十:异常
    python学习笔记九:正则表达式
  • 原文地址:https://www.cnblogs.com/agilestyle/p/11407071.html
Copyright © 2011-2022 走看看