# 23种设计模式_用最通俗大白话讲明白!!
**Repository Path**: gaopengyue/java_mode_23
## Basic Information
- **Project Name**: 23种设计模式_用最通俗大白话讲明白!!
- **Description**: 众所周知,面向对象编程中23种设计模式是必修课程,而其中很多模式太过抽象、对新手十分不友好。因此,本文致力于使用最通俗的大白话,清楚而简洁地向大家讲明白、这23种设计模式到底是怎么回事,欢迎观看(*^▽^*)!
(持续更新)
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-12-20
- **Last Updated**: 2025-02-12
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Java23种设计模式_用最通俗大白话讲明白!!
#### 介绍
众所周知,在面向对象编程中,23种设计模式是必修课程。而其中很多模式太过抽象、对新手十分不友好。因此,本文致力于使用最通俗的大白话,清楚而简洁地向大家讲明白、这23种设计模式到底是怎么回事,欢迎观看(*^▽^*)!
(本内容侧重讲解各种模式的意义、而非具体的代码内容,请配合其他讲解具体代码的文章食用)
(持续更新ing~)
#### 学习23种设计模式的原因
在学习23种设计模式之前,我们先来思考一个问题:
为什么要学这些设计模式?这些东西以后真能用得到吗?
我不知道屏幕前的各位怎么想,反正当初学23种设计模式时,我们班的同学对此普遍都觉得比较懵【笑哭】【笑哭】
我们当时才刚学完java呀、学这东西怎么可能听得懂啊喂!!大家的集体反映就是,不知道这些模式是干什么的、也不知道为什么学,众脸懵逼堪比刚被苏轼叫醒的张怀民

所以23种设计模式到底是干什么的呢?
首先这玩意没有听起来那么高大上。一句话概括,它就是一种对结构进行优化的思想,目的是为了让杂乱无章的代码变得有序、利于理解和修改。
我们来举一个形象的栗子:

奥特曼玩偶大家小时候大概都玩过吧,我们这里先看第一种玩偶

这个看起来好像是布面的玩偶,可以看到它是一整张布织出来的,全身的胳膊腿都连在一起。
这个奥特曼是完整的,但当你把它买回家玩了几天以后、你就发现一个问题:
一旦奥特曼的胳膊腿任何一个地方出现破口,里面的棉花就会漏出来,然后这个玩具就废了。(当然,是在没有针线的条件下)
因为什么呢?这是因为它的胳膊腿和身体没有区分、连成了一个关系过分紧密的整体。这样无论它身上哪个极其微小的部位发生破损,都会导致整个玩偶完全废掉,这玩偶也就不能要了。
于是我就哭了。我花好几十买的玩偶,仅仅因为胳膊上破了个小小的口子、就导致整个玩偶都不能要了,这是不是有点太亏了??
这个放在咱们的术语里、就叫做“耦合度过高”。它对系统整体是有害的。
那么这个问题该如何解决呢?别着急,我们再来看看第二种玩偶:

可以发现、这种玩偶看起来是一块一块拼起来的。它把胳膊、腿这些零件分别生产出来,然后拿到一起拼起来,最终形成一个玩偶
显而易见,一旦它的胳膊损坏了,实际上坏的只是胳膊、而对整个身体没有影响。我们不需要新买一个玩具,而只需要给它换一个胳膊就好了!这是不是很方便呢?
如果您深刻理解了这个例子,那么恭喜你、你已经搞明白23种设计模式存在的意义了。

玩偶从整体生产、变成零件生产再拼装,这就是一个非常简单清晰的结构优化过程。
而我们的23种设计模式听着高大上,其实所做的无非也就是这种简单的事情。玩具从整体生产变得“零件化”、这也就是我们编程里所谓的“模块化”,它们的道理是完全一样的。
再好比化学里的石墨和钻石:其实如果不动脑子,只用C单质简单粗暴就能构成石墨、这很简单。但如果你稍微动动脑子,把原子排列的结构进行一下优化————一块钱的铅笔就变成了一千元的钻石。
所以如果你问我:啊学长、这个23种设计模式是必须要学的吗?不学难道以后就写不了代码了吗?
额,怎么说呢。。。
那肯定不是啊!!!!!
这个问题就好比问:H2O是1805年发现的、那此前的人们怎么喝水??

你别说不学设计模式,你就是不学高级语言、它也不耽误你编程!知道吧
所有高级语言的代码经过编译器解释、到最后无非都变成“0101”这种易于电脑理解的机器语言,所以理论上只要你把机器语言学通了,地球上所有电脑的所有功能你都能做————
可问题是效率啊!!!
本来python二十行能写一个贪吃蛇,现在你用机器码编程、一个贪吃蛇写半个月,那咱不用干别的了!
所以说不要看见高级的语言、高级的框架就觉得害怕,它们不过都是用来提高生产力、优化产品质量的,而不是说只有它们能写出这个程序、换别人来都不行,不存在的。
都说软件行业工资高,为什么高?它就高在先进且高效的生产力呀。你要是用“0101”的机器码写《黑神话》这种大型游戏,1万个程序员一起上、写到宇宙毁灭它也写不完啊!!

玩笑归玩笑,也正是由于这个原因,使得我们学生一时间确实很难理解抽象的设计模式。
毕竟我们新手写的程序都是什么“计算器”、“大小写字母转换”这种简单的不能再简单的玩意儿,变量命名都直接“abc”,整个代码都不超过100行。我们哪能理解什么是“效率”、什么是“生产力”啊??
更过分的像我这样的,刚学c语言时不知道为什么要把一段代码拿出来、单独变成“函数”,当时的我觉得完全没必要啊【笑哭】【笑哭】
当然,现在知道了函数思想作用很大:一方面当代码需要重复时、极大节约了工作量,另一方面它也好改不是么?这些都是需要实践才能明白的。

一种设计模式的诞生总有它存在的特殊意义,如果它没有好处、我们也没必要费劲巴力地去创造它。
那么接下来,我将用最简单、最朴实的大白话,去帮助大家分别理解每一种设计模式的概念、好处、使用场景,希望能够从根本上帮助大家理解这23种设计模式。大家就是我最大的心愿,感谢您的支持(*^▽^*)
#### 23种设计模式列表
(一)创建型模式:
1. 工厂方法模式
2. 抽象工厂模式
3. 单例模式
4. 建造者模式
5. 原型模式
(二)结构型模式:
1. 适配器模式
2. 装饰器模式
3. 代理模式
4. 外观模式
5. 桥接模式
6. 组合模式
7. 享元模式
(三)行为型模式:
1. 策略模式
2. 模板方法模式
3. 观察者模式
4. 迭代子模式
5. 责任链模式
6. 命令模式
7. 备忘录模式
8. 状态模式
9. 访问者模式
10. 中介者模式
11. 解释器模式