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 }
  • 相关阅读:
    CCF NOI1006 捡石头
    POJ NOI MATH-7648 蓄水池水管问题
    CCF NOI1005 存款收益
    CCF NOI1004 填充矩形
    CCF NOI1003 猜数游戏
    CCF NOI1002 三角形
    Project Euler Problem 26 Reciprocal cycles
    HDU1799 循环多少次?
    CCF NOI1001 温度转换
    POJ NOI MATH-7647 余数相同问题
  • 原文地址:https://www.cnblogs.com/agilestyle/p/11407071.html
Copyright © 2011-2022 走看看