From 51591d0a08ee6b178761cf57515d9f733447cd0b Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Wed, 28 Oct 2026 13:35:28 +0800 Subject: [PATCH] =?UTF-8?q?Update=20=E8=AE=BE=E8=AE=A1=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=20-=20=E7=9B=AE=E5=BD=95.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 补充前言:设计模式解决的问题、三类模式中常用的模式和 JDK 中的例子。 --- notes/设计模式 - 目录.md | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/notes/设计模式 - 目录.md b/notes/设计模式 - 目录.md index c19d6044..d17d7ce5 100644 --- a/notes/设计模式 - 目录.md +++ b/notes/设计模式 - 目录.md @@ -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)