首页 > 其他分享 >设计模式-模板方法模式(Template Method Pattern)

设计模式-模板方法模式(Template Method Pattern)

时间:2024-02-08 15:12:15浏览次数:39  
标签:定义 ## Pattern 算法 Template 子类 设计模式 方法 模板

# 模板方法模式(Template Method Pattern)

- 记忆关键字:模板方法

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

- 类型:行为型

- ![UML类图](./design-pattern.png)

## 1.涉及的角色
1)AbstractClass(抽象类)
是一个抽象模板,定义并实现了一个模板方法

2)ConcreteClass(具体实现类)
实现父类所定义的一个或多个抽象方法


## 2.使用场景
- java.util.AbstractList
- java.util.AbstractMap
- java.io.InputStream
- -AbstractApplicationContext 类中的 refresh() 方法是一个典型的模板方法模式的应用

## 3. 分析
- 模板方法模式是通过把不变行为搬移到超类,去除子类中的重复代码来体现它的优势
- 提供了一个很好的代码复用平台
- 通过抽象类定义算法的框架,并将其中一些步骤留给子类实现,从而实现了算法的复用和扩展。

标签:定义,##,Pattern,算法,Template,子类,设计模式,方法,模板
From: https://www.cnblogs.com/hld123/p/18011824

相关文章

  • Python实现软件设计模式9:组合模式 Composite Pattern
    动机如何将容器和叶子进行递归组合,使得用户在使用时无须对它们进行区分,可以一致地对待容器和叶子?典型案例如:文件系统,在树形目录结构中,包含文件和文件夹两类不同的元素;在文件夹中可以继续包含文件或子文件夹,在文件中不能再包含子文件或者子文件夹。概念组合多个对象形成树形......
  • TypeScript 设计模式之发布订阅者模式
    订阅发布模式(Publish-SubscribePattern)是一种行之有效的解耦框架与业务逻辑的方式,也是一种常见的观察者设计模式,它被广泛应用于事件驱动架构中。在这个模式中,发布者(或者说是主题)并不直接发送消息给订阅者,而是通过调度中心(或者叫消息代理)来传递消息。发布者(或者说是主题)并不知道订......
  • 【设计模式】建造者模式——OkHttp源码中的建造者模式
    OkHttp源码中的建造者模式之所以有必要单独拿出来讲,是因为OkHttp3.x和4.x分别用Java语言和Kotlin语言写的,所以需要做一个对比分析。在OkHttp的源码中搜索“Builder”,可以看到OkHttp的OkHttpClient、Request和Response等很多类的代码里包含名为Builder的子类,这些都是建造者模式的应......
  • 设计模式:适配器模式
    设计模式是通用的、可复用的代码设计方案,也可以说是针对某类问题的解决方案,因此,掌握好设计模式,可以帮助我们编写更健壮的代码。wiki中将设计模式分为四类,分别是:创建模式(creationalpatterns)结构模式(structuralpatterns)行为模式(behavioralpatterns)并发模式(concurrencypatt......
  • pattern和validator自定义校验规则
    data(){constcheckNum=(rule,value,callback)=>{   if(value||value===0){    if(value<1||value>99){     returncallback(newError('次数取值范围1~99'))    }    if(!Number.isInteger(Number(value)......
  • 解决编译报错——too few arguments for template template parameter “Tuple“detec
    一般出现这种问题都是cuda、pytorch和vs版本没配对上。这里出现问题的文件为torch中的cast.h。我看网上很多给的解决方法是修改下面代码:template<template<typename...>classTuple,typename...Ts>classtuple_caster;template<typenameT1,typenameT2>classtyp......
  • golang之设计模式
    [选项模式]packagemainimport"fmt"typeOptionFuncfunc(*DoSomethingOption)typeDoSomethingOptionstruct{aintbstringcbool}funcNewDoSomethingOption(cbool,opts...OptionFunc)*DoSomethingOption{s:=&DoSomethi......
  • 【设计模式】原型模式——其他框架源码中的原型模式
    原型模式在其他框架源码中也有广泛的应用。Retrofit众所周知Retrofit是OkHttp的扩展,因此Retrofit的Call接口也像OkHttp的Call类一样实现了原型模式。Call与原型模式有关的代码如下:publicinterfaceCall<T>extendsCloneable{//……代码省略……/***Createanew,i......
  • 设计模式(Design Pattern)
    目录设计模式(DesignPattern)面向对象设计原则创建型模式结构型模式行为型模式设计模式(DesignPattern)概念与定义是一套被反复使用的、多数人知晓的、经过分类编目的代码设计经验的总结。设计模式(DesignPattern)是一种对于软件系统中不断重现的设计问题的解决方案进行......
  • 设计模式--建造者模式
    建造者模式(BuilderPattern)是一种对象构建设计模式,它提供了一种构建对象的最佳方式。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在建造者模式中,一个导演(Director)负责组织各个部分(Builder)的构建步骤,一个抽象构建器(AbstractBuilder)定义了各个部分的构建和......