Update 设计模式 - 目录.md

补充前言:设计模式解决的问题、三类模式中常用的模式和 JDK 中的例子。
This commit is contained in:
CyC2018
2026-10-28 13:35:28 +08:00
parent 5177e8fed3
commit 51591d0a08
+15 -3
View File
@@ -2,7 +2,19 @@
## 一、前言
设计模式是解决问题的方案,学习现有的设计模式可以做到经验复用。拥有设计模式词汇,在沟通时就能用更少的词汇来讨论,并且不需要了解底层细节。
设计模式是针对反复出现的设计问题给出的解决方案。它关心类和对象之间如何划分职责、如何协作,使需求变化时只需修改少量代码;它描述的是解决思路,而不是可以直接复制的代码。
学习设计模式,一方面可以复用前人总结的设计经验,另一方面在讨论设计时可以用“策略”“装饰”等名词代替大段的描述。
四人组(Gang of Four, GoF)在《设计模式》中把 23 种模式分为三类:
- 创建型关注对象如何被创建,使创建与使用分离,常用的有[单例](设计模式%20%20-%20单例.md)、[工厂方法](设计模式%20-%20工厂方法.md)和[生成器](设计模式%20-%20生成器.md);
- 结构型关注类和对象如何组合成更大的结构,常用的有[适配器](设计模式%20-%20适配器.md)、[装饰](设计模式%20-%20装饰.md)和[代理](设计模式%20-%20代理.md);
- 行为型关注对象之间如何分配职责和通信,常用的有[策略](设计模式%20-%20策略.md)、[观察者](设计模式%20-%20观察者.md)、[责任链](设计模式%20-%20责任链.md)和[模板方法](设计模式%20-%20模板方法.md)。
JDK 中,Runtime.getRuntime() 是单例,Calendar.getInstance() 是静态工厂方法,BufferedInputStream 包装其它输入流以增加缓冲,属于装饰器。Arrays.asList() 把数组适配为 List,属于适配器;java.lang.reflect.Proxy 在运行时生成代理对象。
Spring 中的用法见 [Spring 中的设计模式](Spring.md#七spring-中的设计模式)。
## 二、创建型
@@ -41,8 +53,8 @@
## 参考资料
- 弗里曼. Head First 设计模式 [M]. 中国电力出版社, 2007.
- Gamma E. 设计模式: 可复用面向对象软件的基础 [M]. 机械工业出版社, 2007.
- Bloch J. Effective java[M]. Addison-Wesley Professional, 2017.
- Gamma E. 设计模式:可复用面向对象软件的基础 [M]. 机械工业出版社, 2007.
- Bloch J. Effective Java [M]. Addison-Wesley Professional, 2017.
- [Design Patterns](http://www.oodesign.com/)
- [Design patterns implemented in Java](http://java-design-patterns.com/)
- [The breakdown of design patterns in JDK](http://www.programering.com/a/MTNxAzMwATY.html)