# design-pattern
**Repository Path**: lzugis15/design-pattern
## Basic Information
- **Project Name**: design-pattern
- **Description**: 设计模式研究示例及个人心得总结
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 3
- **Created**: 2024-10-16
- **Last Updated**: 2024-10-16
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## 设计原则
- 封装变化
- 多用组合,少用继承
- 针对接口编程,不针对实现编程
- 为交互对象之间松耦合设计而努力
- 类应该对扩展开放,对修改关闭
- 依赖抽象,不要依赖具体类
- 最少知识原则,减少对象之间的交互
- 底层组件绝对不可以直接调用高层组件
## 心得
### 策略模式
- 策略模式主要用于针对抽象创建具体的实例。通过不同的策略来创建特定的实例。
- 策略模式的核心内容是依赖于抽象而不依赖于具体,在运行时才根据策略调整依赖。
### 观察者模式
- 观察者模式需要被观察对象是可被观察的,即被观察对象的方法中必须执行观察者的更新
- 观察者统一由观察者族群进行注册或者移除。
- 被观察者状态改变时,调用更新方法,更新方法中将观察者依次调用一遍。
### 工厂模式
- 工厂模式需要抽象出生成对象的方式,运行时根据工厂产出对象进行使用
- 引申抽象工厂模式,即工厂也是抽象的,先产出工厂,再产出产品,然后进行具体的操作
### 单例模式
- 当前系统内唯一的实例。
### 装饰者模式
- 装饰者模式主要应用于对被装饰对象本身不做任何改变的情况下,对被装饰对象进行扩展。
- 装饰器依赖于被装饰的对象,在被装饰者的基础上增加扩展,被调用时应当调用装饰器的扩展方法,而不是直接调用被装饰者的原始方法。
### 命令模式
- 命令模式主要用于将指令与被操控对象解耦,在使用时控制器直接操纵对应的命令,实际的命令依赖于被被操控对象,而且基本上只做单指令的操作。单指令只操作操控对象中的一个方法。
### 适配器模式
- 将没办法直接使用的两个对象进行适配
### 外观模式
- 使接口更加方便使用
- 外观不封装子系统的类,如果有必要,可以直接调用子系统的类
### 模板方法模式
- 子类决定模板方法中真正地实现内容,在不改变算法结构的情况下,重新定义算法中的某些步骤
### 迭代器模式
## 参考书籍
**Head First 设计模式(中文版).pdf**
### 特别感谢:
https://github.com/RongleXie/java-books-collections