# 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