# java-design-pattern
**Repository Path**: ShaoxiongDu/java-design-pattern
## Basic Information
- **Project Name**: java-design-pattern
- **Description**: 📚详解Java设计模式
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: https://shaoxiongdu.github.io/java-design-pattern/#/
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-07-20
- **Last Updated**: 2021-07-20
## Categories & Tags
**Categories**: Uncategorized
**Tags**: design-pattern
## README
# 📚详解Java设计模式
## 一.设计模式介绍
> - 设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。
> - 这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。
> - 重用设计模式有助于防止引起重大问题的细微问题。
> - 使得程序具有更好的
> - 代码重用性
> - 可读性
> - 可扩展性
> - 可靠性
> - 高内聚,低耦合性
> - 设计模式背后是软件七大设计原则
## 二.如何学习?
1. ### 目录结构
每一个`设计模式/原则` 对应一个`文件夹` 文件夹结构如下:

2. ### 准备工具
- 最好`fork` 然后克隆到本地,建议使用IDEA + Typora 进行学习
- 每种设计模式下,都伴有对应的UML图,IDEA可以安装插件 [【PlantUML】](https://plugins.jetbrains.com/plugin/7017-plantuml-integration) 对UML图进行编辑或查看
## 三.清单
### [1.类和类之间的关系(首先了解)](./类和类之间的关系(UML图)/类和类之间的关系.md)
### 2.软件设计七大原则(由浅至深)
| 设计原则 | 简要描述|
| ------------------- | ------------------------------------------ |
| [1. 单一职责原则](./单一职责原则/单一职责原则.md) | 一个类或者一个方法只做一件事情|
| [2. 开闭原则](./开闭原则/开闭原则.md) | 对扩展开发,对修改关闭|
| [3. 接口隔离原则](./接口隔离原则/接口隔离原则.md) | 使用多个专门的接口,而不是总接口 |
| [4. 依赖倒置原则](./依赖倒置(转换)原则/依赖倒置(转换)原则.md) | 面向抽象(接口)编程,而不是面向实现编程|
| [5. 里氏替换原则](./里氏替换原则/里氏替换原则.md) | 所有使用父类对象的地方,都应该可以透明的替换为子类的对象|
| [6. 迪米特法则](./迪米特法则/迪米特法则.md) |一个类应该对其他类保持最少的了解|
| [7. 组合优于继承原则](./组合优于继承原则/组合优于继承原则.md) | 多使用`关联`,少使用甚至不使用`继承`来达到复用已有对象的目的 |
### 3.常见的设计模式 (非全部27种)
| 设计模式|
| -----------------|
| [01-简单工厂模式](./01-简单工厂模式/简单工厂模式.md)|
| [02-工厂方法模式](./02-工厂方法模式/工厂方法模式.md)|
| [03-抽象工厂模式](./03-抽象工厂模式/抽象工厂模式.md)|
| [04-原型模式](./04-原型模式/原型模式.md)|
| [05-建造者模式](./05-建造者模式/建造者模式.md)|
| 正在更新!|
## 四.反馈及改进
如果您在学习的时候遇到了任何问题,或者清单有任何可以改进的地方,
非常欢迎提出issues,看到就会回馈.并且将您添加到项目贡献者列表中。
## 五.参与贡献(非常欢迎!)
1. Fork 本仓库
2. 新建 Feat_xxx 分支
3. 提交代码
4. 新建 Pull Request,填写必要信息。
5. 等待审核即可。通过之后会邮件通知您。
## 六.许可证
在 MIT 许可下分发。有关更多信息,请参阅[`LICENSE`](./LICENSE)。
## 七.致谢
> 2. 感谢JetBrains提供的开发环境许可 [官方网站](https://www.jetbrains.com/)
> 3. 感谢Gitee提供的图床平台 [图床地址](https://gitee.com/ShaoxiongDu/imageBed)