当前位置: 首页 > news >正文

【速览】设计模式(更新中)

目录

  • 一、背景
  • 二、优缺点
  • 三、适用场景
  • 四、核心组成
    • 创建型模式
    • 结构型模式
    • 行为型模式
  • 五、底层原理
  • 六、对比

一、背景

这个技术出现的背景、初衷和要达到什么样的目标或是要解决什么样的问题。这个问题非常关键,也就是说,你在学习一个技术的时候,需要知道这个技术的成因和目标,也就是这个技术的灵魂。如果不知道这些的话,那么你会看不懂这个技术的一些设计理念。

二、优缺点

这个技术的优势和劣势分别是什么,或者说,这个技术的 trade-off 是什么。任何技术都有其好坏,在解决一个问题的时候,也会带来新的问题。另外,一般来说,任何设计都有 trade-off(要什么和不要什么),所以,你要清楚这个技术的优势和劣势,以及带来的挑战。

三、适用场景

这个技术适用的场景。任何技术都有其适用的场景,离开了这个场景,这个技术可能会有很多槽点,所以学习技术不但要知道这个技术是什么,还要知道其适用的场景。没有任何一个技术是普适的。注意,所谓场景一般分别两个,一个是业务场景,一个是技术场景。

四、核心组成

技术的组成部分和关键点。这是技术的核心思想和核心组件了,也是这个技术的灵魂所在了。学习技术的核心部分是快速掌握的关键。

分为三大类:

  • 创建型模式

    • 工厂方法模式
    • 抽象工厂模式
    • 单例模式
    • 建造者模式
    • 原型模式
  • 结构型模式

    • 适配器模式
    • 装饰器模式
    • 代理模式
    • 外观模式
    • 桥接模式
    • 组合模式
    • 享元模式
  • 行为型模式

    • 策略模式
    • 模板方法模式
    • 观察者模式
    • 迭代子模式
    • 责任链模式
    • 命令模式
    • 备忘录模式
    • 状态模式
    • 访问者模式
    • 中介者模式
    • 解释器模式

五、底层原理

技术的底层原理和关键实现。任何一个技术都有其底层的关键基础技术,这些关键技术很有可能也是其它技术的关键基础技术。所以,学习这些关键的基础底层技术,可以让你未来很快地掌握其它技术。

六、对比

已有的实现和它之间的对比。一般来说,任何一个技术都会有不同的实现,不同的实现都会有不同的侧重。学习不同的实现,可以让你得到不同的想法和思路,对于开阔思维,深入细节是非常重要的。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【Linux】软硬链接
  • 0.91寸OLED迷你音频频谱
  • 乘积小于 K 的子数组(LeetCode)
  • 软件工程(2)面向对象方法:Booch方法与开发实例
  • 机器学习笔记六-朴素贝叶斯
  • 【机器学习】探索机器学习在旅游业的革新之旅
  • BI分析实操案例分享:零售企业如何利用BI工具对销售数据进行分析?
  • 后端代码练习5--验证码案例
  • 算法的学习笔记—栈的压入、弹出序列(牛客JZ31)
  • 【人工智能】对智元机器人发布的远征A1所应用的AI前沿技术进行详细分析,基于此整理一份学习教程。
  • 每天一个数据分析题(四百九十)- 主成分分析与因子分析
  • 基于SpringBoot的Java个人博客系统的设计与实现(源码+lw+部署文档+讲解等)
  • 【论文阅读】APMSA: Adversarial Perturbation Against Model Stealing Attacks(2023)
  • Few-shot Learning
  • Python.NET:打开Python与.NET世界互通的大门
  • php的引用
  • [PHP内核探索]PHP中的哈希表
  • python3.6+scrapy+mysql 爬虫实战
  • #Java异常处理
  • @jsonView过滤属性
  • go append函数以及写入
  • JavaScript 基础知识 - 入门篇(一)
  • jquery ajax学习笔记
  • Nacos系列:Nacos的Java SDK使用
  • Python十分钟制作属于你自己的个性logo
  • React组件设计模式(一)
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 规范化安全开发 KOA 手脚架
  • 诡异!React stopPropagation失灵
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 前端代码风格自动化系列(二)之Commitlint
  • 日剧·日综资源集合(建议收藏)
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • # 安徽锐锋科技IDMS系统简介
  • #Spring-boot高级
  • #Ubuntu(修改root信息)
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • $.proxy和$.extend
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (南京观海微电子)——示波器使用介绍
  • (五)activiti-modeler 编辑器初步优化
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (转)大型网站架构演变和知识体系
  • ... 是什么 ?... 有什么用处?
  • .NET 表达式计算:Expression Evaluator
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件
  • .NET序列化 serializable,反序列化
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?
  • @vue/cli脚手架