0.专栏概述与几句闲话

news2024/11/24 5:47:09

还记得今年大年初一开始写《数据结构和算法》专栏的时候定了个小目标:
在这里插入图片描述
不知不觉间已经过去了十个月,我的第一个专栏也算是圆满收官了 。
这次PO一张成都熊猫基地的团子们,开启设计模式这个专栏吧。
在这里插入图片描述

目录与概述

犹记得一位身在广州的老前辈在我初入职场时的教诲:“数据结构和算法、设计模式是一个程序员的内功,内功从短期来看往往也是鸡肋。掌握它们、了解它们对于你眼前的CRUD也许没有丝毫帮助,但这些东西却决定了一个程序员的上限。只做CRUD,做了再多年也不过是从初级程序员变成了资深初级程序员,这些内功就摆在那里,谁能吸收的越多,谁就越有可能真正读懂、理解到主流框架的源码。而不是书到用时去背八股,自己成长的越多,也就越能把命运握在自己手里,越能自己做出一些选择,况且这些内功不用则已,一旦你能应用起来便是开悟之时,更是你能力职级进阶之时”。

现在,这位前辈已经基本实现财富自由,能把编程从爱好变为谋求第一桶金的工具,又把它从工具变回了爱好,这种感觉一定很让人振奋吧。

在这个专栏中,我会从设计模式的七原则开始,即:单一职责原则、接口隔离原则、依赖倒转原则、里氏替换原则、开闭原则、迪米特法则、合成复用原则,进而对依赖、泛化、实现、关联、聚合、组合六大关系做拆解,最后逐一讲述单例模式、抽象工厂模式、工厂模式、原型模式、建造者模式、适配器模式、桥接模式、装饰者模式、组合模式、外观模式、享元模式、代理模式、模板方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、责任链模式23种设计模式,并尽可能的从优秀的框架(比如spring)中寻找应用相关设计模式的源码。
然而,设计模式博大精深,能完全了解其原理已经是颇有难度了,相信想要灵活运用23种设计模式应该是每一个程序员的梦想。希望自己能在讲述拆解的过程中获得更深的理解和感悟吧。


关注我,共同进步,每周至少一更。——Wayne

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1171421.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CAN报文的信号和信号组传递的意义

CAN将数据发送到COM层,在这个过程中报文是如何传递的? 0x105指的是一帧CAN报文,信号组指的是一帧CAN报文里的所有数据,信号指的是一帧CAN报文里的每一个信号,PDU代表了一帧CAN报文,它由报文ID(I…

wagtail的使用

文章目录 安装虚拟环境新建项目时指定虚拟环境打开已有项目添加虚拟环境 安装wagtail查看安装后的包 创建wagtail项目安装依赖迁移创建超级用户运行项目 管理工作台内容扩展首页的数据模型更新数据库修改模板页创建一个页面的过程 models中的基本字段templates字符型文本字段富…

[动态规划] (五) 路径问题: LeetCode 62.不同路径

[动态规划] (五) 路径问题: LeetCode 62.不同路径 文章目录 [动态规划] (五) 路径问题: LeetCode 62.不同路径题目解析解题思路状态表示状态转移方程初始化和填表返回值 代码实现总结 62. 不同路径 题目解析 (1) 机器人从左上角到右下角有多少方法 (2) 机器人只能向左或者向右…

【VsCode输出中文乱码问题】用vscode写c/c++时,终端输出结果为中文乱码如何解决?

文章目录 前言原因解决办法方法一:chcp临时修改编码方式1. 使用chcp命令可以查看cmd的编码方式,直接在当前文件夹目录下,输入:chcp2. 修改编码方式 方式二:更改VScode的默认编码方式为GBK 前言 因为我平时在vscode写代…

快速排序(Java)

基本思想 快速排序Quicksort)是对冒泡排序的一种改进。 基本思想是分治的思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排…

高等数学教材重难点题型总结(十)重积分

第十章错题整理,公式由于多元函数的引入看起来唬人而已,其实熟练掌握一元函数的积分后不算什么难事。重点在于计算时不要犯细节错误。此外,对于不同坐标系下的积分方式要重点关注~ 1.利用性质估计二重积分的值 2.计算直角坐标系下的二重积分 …

行情分析——加密货币市场大盘走势(11.4)

大饼昨日下跌过后开始有回调的迹象,现在还是在做指标修复,大饼的策略保持逢低做多。稳健的依然是不碰。 以太昨日给的策略,已经止盈了,现在已经达到1835,接下来就是等待即可,还会继续上涨的,当然…

JavaEE平台技术——预备知识(Maven、Docker)

JavaEE平台技术——预备知识(Maven、Docker) 1. Maven2. Docker 在观看这个之前,大家请查阅前序内容。 😀JavaEE的渊源 😀😀JavaEE平台技术——预备知识(Web、Sevlet、Tomcat) 1. M…

【C++入门】类和对象(一)

目录 前言 1. 面向对象和面向过程 2. 类的引入 3. 类的定义 3.1 类的定义方法 4. 类的访问限定符和封装 4.1 访问限定符 4.2 封装 5. 类的作用域 6. 类的实例化 7. 类对象模型 7.1 类对象的大小 8. this指针 前言 在初学C语言时,想必大家都听说过 “ 面向过…

基于STC12C5A60S2系列1T 8051单片机EEPROM应用

基于STC12C5A60S2系列1T 8051单片机EEPROM应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍STC12C5A60S2系列1T 8051单片机EEPROM介绍基于STC12C5A60S2系列1T 8051单…

02 线性组合、张成的空间与基

线性组合、张成的空间与基 基向量缩放向量并相加给定向量张成的空间线性相关与线性无关空间的基 这是关于3Blue1Brown "线性代数的本质"的学习笔记。 基向量 当看到一对描述向量的数时,比如[3,-2]时,把这对数中的每个数(坐标&…

Android性能优化--Perfetto用SQL性能分析

Android性能优化–Perfetto用SQL性能分析 文章目录 Android性能优化--Perfetto用SQL性能分析介绍Perfetto SQL 基础使用 Perfetto SQL 进行性能分析总结 本文首发地址 https://blog.csdn.net/CSqingchen/article/details/134167741 最新更新地址 https://gitee.com/chenjim/che…

Git从基础到实践

1.Git是用来做什么的? git就是一款版本控制软件,主要面向代码的管理。你可以理解为Git是一个代码的备份器,给你的每一次修改后的代码做个备份,防止丢失,这个是git最基本的功能。 其次,git不止备份,当你需要比对多…

隔离和非隔离电源的区别

一、电源隔离与非隔离 电源的隔离与非隔离,主要是针对开关电源而言,业内比较通用的看法是: 1、隔离电源:电源的输入回路和输出回路之间没有直接的电气连接,输入和输出之间是绝缘的高阻态,没有电流回路。 …

性格孤僻的人怎么改变自己?

性格孤僻,说的是寡言少语,不合群,不能与人保持正常关系、经常离群索居的心理状态。这里只是说性格,不涉及心理疾病,只说这是一种性格特征。性格孤僻的人不一定有心理疾病,但是长期的性格孤僻确实容易导致产…

VueI18n中英文切换 vue2.0

1: npm install --save vue-i18n8.0.0 (版本不要高了,不然报错) 2:创建相关文件 3:main.js文件配置 //i18n插件 import VueI18n from vue-i18n // element-ui多语言文件 import locale from element-ui/lib/locale;…

旋转图像[中等]

优质博文:IT-BLOG-CN 一、题目 给定一个n n的二维矩阵matrix表示一个图像。请你将图像顺时针旋转90度。你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。 示例 1: 输入: matrix…

perl列表创建、追加、删除

简介 perl 列表追加元素 主要是通过push和unshift函数来实现。其中,push是追加到列表尾,unshift是追加到列表头。 perl列表删除元素 主要是通过pop和shift函数来实现。其中,pop是从列表尾删除一个元素, shift是从列表头删除一…

以配置的方式开关axios拦截器功能

前景提要: ts 简易封装 axios,统一 API 背景 axios 很多额外功能都是基于拦截器实现。有些功能想要全局使用,因此将拦截器注册在全局。比如重复请求过滤。但也有一小部分请求不希望进行过滤,比如并发上传文件。 因此希望可以在…

贰[2],OpenCV函数解析

1,imread:图片读取 CV_EXPORTS_W Mat imread( const String& filename, int flags IMREAD_COLOR );//参数1(filename):文件地址 //参数2(flags):读取标志 注:ImreadModes,参数2(flags)枚举定义 enum ImreadModes { IMREAD…