zoukankan      html  css  js  c++  java
  • 【设计模式】-行为型-1-模板方法模式

    主要角色

    1. 抽象类(Abstract Class):负责给出一个算法的轮廓和骨架。它由一个模板方法和若干个基本方法构成。这些方法的定义如下。
      1.1 模板方法:定义了算法的骨架,按某种顺序调用其包含的基本方法。
      1.2 基本方法:是整个算法中的一个步骤,包含以下几种类型。
      1.2.1 抽象方法:在抽象类中申明,由具体子类实现。
      1.2.2 具体方法:在抽象类中已经实现,在具体子类中可以继承或重写它。
      1.2.3 钩子方法:在抽象类中已经实现,包括用于判断的逻辑方法和需要子类重写的空方法两种。
      2 具体子类(Concrete Class):实现抽象类中所定义的抽象方法和钩子方法,它们是一个顶级逻辑的一个组成步骤。

    代码示例

    package templateMethod;
    public class TemplateMethodPattern
    {
        public static void main(String[] args)
        {
            AbstractClass tm=new ConcreteClass();
            tm.TemplateMethod();
        }
    }
    //抽象类
    abstract class AbstractClass
    {
        public void TemplateMethod() //模板方法
        {
            SpecificMethod();
            abstractMethod1();          
             abstractMethod2();
        }  
        public void SpecificMethod() //具体方法
        {
            System.out.println("抽象类中的具体方法被调用...");
        }   
        public abstract void abstractMethod1(); //抽象方法1
        public abstract void abstractMethod2(); //抽象方法2
    }
    //具体子类
    class ConcreteClass extends AbstractClass
    {
        public void abstractMethod1()
        {
            System.out.println("抽象方法1的实现被调用...");
        }   
        public void abstractMethod2()
        {
            System.out.println("抽象方法2的实现被调用...");
        }
    }
    
  • 相关阅读:
    maven配置使用
    【插件使用】 vscode, 中以服务形式运行文件的方法 ,Live Sever 插件的使用
    常用位运算操作
    [LeetCode] 743. Network Delay Time( 网络延迟时间)
    STL之--插入迭代器(back_inserter,inserter,front_inserter的区别)
    767. 重构字符串(仿函数调用外部数据)
    C++之ptr_fun、mem_fun和mem_fun_ref
    STL算法之for_each
    C++之not1和not2
    C++之compose1、compose2
  • 原文地址:https://www.cnblogs.com/tuofan/p/12340422.html
Copyright © 2011-2022 走看看