# 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呀、学这东西怎么可能听得懂啊喂!!大家的集体反映就是,不知道这些模式是干什么的、也不知道为什么学,众脸懵逼堪比刚被苏轼叫醒的张怀民
![输入图片说明](image_1.png)
所以23种设计模式到底是干什么的呢?
首先这玩意没有听起来那么高大上。一句话概括,它就是一种对结构进行优化的思想,目的是为了让杂乱无章的代码变得有序、利于理解和修改。

我们来举一个形象的栗子:
![输入图片说明](image_2.png)
奥特曼玩偶大家小时候大概都玩过吧,我们这里先看第一种玩偶
![输入图片说明](image_3.png)
这个看起来好像是布面的玩偶,可以看到它是一整张布织出来的,全身的胳膊腿都连在一起。
这个奥特曼是完整的,但当你把它买回家玩了几天以后、你就发现一个问题:
一旦奥特曼的胳膊腿任何一个地方出现破口,里面的棉花就会漏出来,然后这个玩具就废了。(当然,是在没有针线的条件下)
因为什么呢?这是因为它的胳膊腿和身体没有区分、连成了一个关系过分紧密的整体。这样无论它身上哪个极其微小的部位发生破损,都会导致整个玩偶完全废掉,这玩偶也就不能要了。

于是我就哭了。我花好几十买的玩偶,仅仅因为胳膊上破了个小小的口子、就导致整个玩偶都不能要了,这是不是有点太亏了??
这个放在咱们的术语里、就叫做“耦合度过高”。它对系统整体是有害的。
那么这个问题该如何解决呢?别着急,我们再来看看第二种玩偶:
![输入图片说明](image_4.png)
可以发现、这种玩偶看起来是一块一块拼起来的。它把胳膊、腿这些零件分别生产出来,然后拿到一起拼起来,最终形成一个玩偶
显而易见,一旦它的胳膊损坏了,实际上坏的只是胳膊、而对整个身体没有影响。我们不需要新买一个玩具,而只需要给它换一个胳膊就好了!这是不是很方便呢?
如果您深刻理解了这个例子,那么恭喜你、你已经搞明白23种设计模式存在的意义了。
![输入图片说明](image_5.png)
玩偶从整体生产、变成零件生产再拼装,这就是一个非常简单清晰的结构优化过程。
而我们的23种设计模式听着高大上,其实所做的无非也就是这种简单的事情。玩具从整体生产变得“零件化”、这也就是我们编程里所谓的“模块化”,它们的道理是完全一样的。
再好比化学里的石墨和钻石:其实如果不动脑子,只用C单质简单粗暴就能构成石墨、这很简单。但如果你稍微动动脑子,把原子排列的结构进行一下优化————一块钱的铅笔就变成了一千元的钻石。

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

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

一种设计模式的诞生总有它存在的特殊意义,如果它没有好处、我们也没必要费劲巴力地去创造它。
那么接下来,我将用最简单、最朴实的大白话,去帮助大家分别理解每一种设计模式的概念、好处、使用场景,希望能够从根本上帮助大家理解这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. 解释器模式