aiyoudiao aiyoudiao
  • JavaScript
  • Vue
  • React
  • 低代码
  • 线性系统
  • 暂未分类
  • LeetCode
  • 算法
  • 数据结构
  • 设计模式
  • Other
  • PMP
  • Office
  • 面试
  • Bash
  • 流年往事
  • 经验片段
  • 读书杂感
  • 归档
  • 分类
  • 标签
  • 简介
  • 收藏
  • 有趣
  • 文档

码二

扫微信二维码,认识一下码二吧😉。
  • JavaScript
  • Vue
  • React
  • 低代码
  • 线性系统
  • 暂未分类
  • LeetCode
  • 算法
  • 数据结构
  • 设计模式
  • Other
  • PMP
  • Office
  • 面试
  • Bash
  • 流年往事
  • 经验片段
  • 读书杂感
  • 归档
  • 分类
  • 标签
  • 简介
  • 收藏
  • 有趣
  • 文档
  • LeetCode

  • 算法

  • 数据结构

  • 设计模式

    • 浅聊设计理念
    • 谈一谈设计原则
    • 工厂方法模式
    • 抽象工厂模式
    • 建造者模式
    • 原型模式
    • 单例模式
    • 桥接模式
    • 代理模式
    • 装饰器模式
    • 适配器模式
    • 享元模式
    • 组合模式
    • 外观模式
    • 观察者模式
    • 模板方法模式
      • 前言
      • 模板方法模式
    • 策略模式
    • 职责链模式
    • 状态模式
    • 迭代器模式
    • 访问者模式
    • 备忘录模式
    • 命令模式
    • 解释器模式
    • 中介者模式
  • Other

  • vue3设计与实现

  • 算法与设计
  • 设计模式
aiyoudiao
2022-02-23

模板方法模式

# 前言

模板方法模式属于行为型模式,这个类型的设计模式总结出了 类、对象之间的经典交互方式,将类、对象的行为和使用解耦了,花式的去使用对象的行为来完成特定场景下的功能。

# 模板方法模式

使用场景:在定义特定功能模板的时候,可以使用这种模式,这种模式强制性的定义了功能接口,同时也让你可以在功能接口处进行扩展操作。这种模式强制性的定义了交互行为,你必须得按照模板的来。

理解:这是一种类、对象之间的经典交互方式,将类、对象的行为和使用解耦了,很实用,但需要根据业务需求好好设计。模板方法模式一般都是在模板方法类中实现一部分功能然后再定义一部分功能接口,然后通过继承的方式去实现这部分功能接口,从而达成复用扩展的目的。模板方法是一个编程技巧,得注重设计,要清楚哪部分需要在模板方法类中实现,哪部分需要在模板方法类中定义功能接口。

namespace action_mode_02 {

    // 模板方法类:进餐
    abstract class Dining {

        private diningBefore() {
            console.log(' ================= 用餐前 ================= ')
        }

        protected abstract dining(): void

        private diningAfter() {
            console.log(' ================= 用餐后 ================= ')
        }

        startEat() {
            this.diningBefore()
            this.dining()
            this.diningAfter()
        }

    }

    // 产品类 1:肯德基
    class KFC extends Dining {
        protected dining(): void {
            console.log('肯德基:喝可乐,吃汉堡薯条')
        }
    }

    // 产品类2:自助餐
    class Buffet extends Dining {
        protected dining(): void {
            console.log('自助餐:喝饮料,吃烤肉火锅')
        }
    }


    const kfc = new KFC()
    const buffet = new Buffet()

    kfc.startEat()
    buffet.startEat()
    
}

#设计模式
上次更新时间: 10年18月2023日 01时57分53秒
观察者模式
策略模式

← 观察者模式 策略模式 →

最近更新
01
01.数据结构导论一览.md
10-16
02
30.2023年06月04日.md
06-04
03
08.与测量相关.md
05-06
更多文章>
Theme by Vdoing | Copyright © 2017-2023 aiyoudiao 码二 备案号: 鄂ICP备2022002654号-1