# Java-design-pattern
**Repository Path**: hzf2281/java-design-pattern
## Basic Information
- **Project Name**: Java-design-pattern
- **Description**: 设计模式学习
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2022-05-09
- **Last Updated**: 2022-06-28
## Categories & Tags
**Categories**: Uncategorized
**Tags**: 设计模式, Java
## README
# Java-design-pattern
#### 📆 项目介绍
该项目包含对23种经典设计模式模式介绍以及实例代码(Java语言实现)等,每个子模块对应一种设计模式。
#### ✅ 已完成模块
| 模块名称 | 模块对应设计模式 |
|:---:|:---|
| pattern-adapter | 适配器模式|
| pattern-bridge | 桥接模式|
| pattern-builder | 建造者模式|
| pattern-chain-of-responsibility | 责任链模式|
| pattern-decorator|装饰者模式 |
| pattern-observer|观察者模式 |
| pattern-proxy|代理模式 |
| pattern-singleton|单例模式 |
| pattern-strategy|策略模式 |
| pattern-template|模板方法模式 |
#### ♨️待补充设计模式
1. 工厂模式 Factory Pattern
2. 抽象工厂模式
3. 原型模式 Prototype Pattern
6. 外观模式 Facade Pattern
7. 享元模式 Flyweight Pattern
8. 组合模式 Composite Pattern
9. 备忘录模式 Memento Pattern
10. 迭代器模式 Iterator Pattern
11. 访问者模式 Visitor Pattern
12. 解释器模式 Interpreter Pattern
13. 命令模式 Command Pattern
16. 中介者模式 Mediator Pattern
17. 状态模式 State Pattern
#### 🚩 安装及使用教程
1. 克隆此仓库。
2. 每个子模块的实例代码中包含测试代码入口,一般位于`com.codefish.test`包下,类名为`XXXTest`。
3. JDK版本需要在8及以上。
#### 🎇 参与贡献
1. Fork 本仓库
2. 新建 Feat_xxx 分支
3. 提交代码
4. 新建 Pull Request
#### 🧭 补充:
以下内容均为转载内容,原文链接:[https://zhuanlan.zhihu.com/p/128145128](https://zhuanlan.zhihu.com/p/128145128)
##### 设计模式七大原则
1. 总原则——开闭原则(Open Closed Principle)
> 一个软件实体,如类、模块和函数应该对扩展开放,对修改关闭。
2. 单一职责原则(Single Responsibility Principle)
> 一个类应该只有一个发生变化的原因。
3. 里氏替换原则(Liskov Substitution Principle)
> 所有引用基类的地方必须能透明地使用其子类的对象。
4. 依赖倒置原则(Dependence Inversion Principle)
> 1、上层模块不应该依赖底层模块,它们都应该依赖于抽象。
> 2、抽象不应该依赖于细节,细节应该依赖于抽象。
5. 接口隔离原则(Interface Segregation Principle)
> 1、客户端不应该依赖它不需要的接口。
2、类间的依赖关系应该建立在最小的接口上。
6. 迪米特法则(最少知道原则)(Law of Demeter)
> 只与你的直接朋友交谈,不跟“陌生人”说话。
7. 合成复用原则(Composite Reuse Principle)
> 尽量使用对象组合/聚合,而不是继承关系达到软件复用的目的。
##### 设计模式三大类别
创建型模式(Creational Pattern):对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离。
> (5种)工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式
结构型模式(Structural Pattern):关注于对象的组成以及对象之间的依赖关系,描述如何将类或者对象结合在一起形成更大的结构,就像搭积木,可以通过简单积木的组合形成复杂的、功能更为强大的结构。
> (7种)适配器模式、装饰者模式、代理模式、外观模式、桥接模式、组合模式、享元模式
行为型模式(Behavioral Pattern):关注于对象的行为问题,是对在不同的对象之间划分责任和算法的抽象化;不仅仅关注类和对象的结构, 而且重点关注它们之间的相互作用。
> (11种)策略模式、模板方法模式、观察者模式、迭代器模式、
> 责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式