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

    模板方法

    定义:定义一个过程中的算法骨架,而将算法的一些步骤延迟到子类中。

    这么做是为了将不变的部分封装到父类中实现,而将可变部分的算法由子类继承实现,便于扩展。

    模板结构:

    • 抽象模板
      • 模板方法:定义了算法的骨架,按某种顺序调用其包含的基本方法。
      • 基本方法:
        • 抽象方法:在抽象类中声明,由具体子类实现。
        • 具体方法:在抽象类中已经实现,在具体子类中可以继承或重写它。
        • 钩子方法:在抽象类中已经实现,包括用于判断的逻辑方法和需要子类重写的空方法两种。
    • 具体子类
      具体实现类,实现抽象类中定义的抽象方法和钩子方法。

    代码示例:

    public abstract class AbstractClass {
    
        public void templateMethod(){
            specificMethd();
            abstractMethod1();
            abstractMethod2();
        }
    
    
        void specificMethd(){
            System.out.println("抽象类实现的方法");
        }
    
        abstract void abstractMethod1();
        abstract void abstractMethod2();
    
    }
    
    public class ConcreteClass extends AbstractClass {
        @Override
        void abstractMethod1() {
            System.out.println("子类实现的方法1");
        }
    
        @Override
        void abstractMethod2() {
            System.out.println("子类实现的方法2");
        }
    }
    

    测试代码:

     public static void main(String[] args) throws InterruptedException, CloneNotSupportedException {
            AbstractClass abstractClass=new ConcreteClass();
            abstractClass.templateMethod();
        }
    

    返回目录

    书山有路勤为径,学海无涯苦作舟
  • 相关阅读:
    (六)Value Function Approximation-LSPI code (5)
    (六)Value Function Approximation-LSPI code (4)
    (六)Value Function Approximation-LSPI code (3)
    (六)Value Function Approximation-LSPI code (2)
    RSA1 密码学writeup
    攻防世界RE 2.666
    攻防世界RE 1.IgniteMe
    {DARK CTF }Misc/QuickFix
    {DARK CTF }forensics/AW
    攻防世界新手RE 12.maze
  • 原文地址:https://www.cnblogs.com/javammc/p/14967890.html
Copyright © 2011-2022 走看看