# design-pattern **Repository Path**: gecm/design-pattern ## Basic Information - **Project Name**: design-pattern - **Description**: 设计模式总结以及java实现 - **Primary Language**: Java - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-06-09 - **Last Updated**: 2024-11-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # design-pattern ## 设计模式分类 - 创建型 - 结构型 - 行为型 ## 六大设计原则 - 单一职责原则(Single Responsibility Principle):通俗理解,一个类承担的职业不能过多,一个类只负责一个职责。 - 开闭原则(Open Closed Principle):一个软件实体应当对扩展开放,对修改关闭。 - 里氏替换原则(Liskov Substitution Principle):一个子类必须能够替换它的父类。 - 迪米特法则(Law of Demeter),又叫“最少知道法则”:一个对象应该最小化它对其他对象的依赖。 - 接口隔离原则(Interface Segregation Principle):将一个接口实现为多个接口,降低类之间的耦合度,提高类的可复用性。 - 依赖倒置原则(Dependence Inversion Principle):依赖倒转,将依赖于抽象类而避免依赖于具体类,提高程序的可扩展性。 # 2.具体归属 ## 创建型设计模式(Creational Patterns) - [工厂方法模式](https://blog.csdn.net/qq_42804736/article/details/115168313)(FactoryMethodPattern):通过工厂方法创建对象,将对象的创建与使用分离。 - 抽象工厂模式(AbstractFactoryPattern):提供一个创建一系列相关或相互依赖对象的接口,而无需指定其具体类。 - 单例模式(SingletonPattern):确保一个类只有一个实例,并提供全局访问点。 - [建造者模式(BuilderPattern)](https://zhuanlan.zhihu.com/p/58093669):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 - 当一个类的构造函数参数个数超过4个,而且这些参数有些是可选的参数,考虑使用构造者模式。 - 原型模式(PrototypePattern):通过复制现有对象来创建新对象。 ## 结构型设计模式(StructuralPatterns) - [适配器模式](https://blog.csdn.net/yucdsn/article/details/130574253)(AdapterPattern):将一个类的接口转换成客户端所期望的另一种接口。 - 桥接模式(BridgePattern):将抽象部分与它的实现部分分离,使它们可以独立地变化。 - 组合模式(CompositePattern):将对象组合成树形结构以表示"部分-整体"的层次结构,使得用户对单个对象和组合对象的使用具有一致性。 - [装饰者模式](https://blog.csdn.net/sinat_37316828/article/details/108613591)(DecoratorPattern):动态地给对象添加额外的职责。 - 外观模式(FacadePattern):为复杂的子系统提供一个简化的接口。 - 享元模式(FlyweightPattern):通过共享细粒度对象来减少内存使用和提高性能。 - [代理模式](https://javaguide.cn/java/basis/proxy.html#_3-1-jdk-%E5%8A%A8%E6%80%81%E4%BB%A3%E7%90%86%E6%9C%BA%E5%88%B6)(ProxyPattern):为其他对象提供一种代理以控制对这个对象的访问 ## 行为型设计模式(BehavioralPatterns) - 责任链模式(ChainOfResponsibilityPattern):将请求的发送者和接收者解耦,使多个对象都有机会处理这个请求。 - 命令模式(CommandPattern):将请求封装成对象,使得可以用不同的请求对客户进行参数化。 - 解释器模式(InterpreterPattern):给定一个语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。 - 迭代器模式(IteratorPattern):提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。 - 中介者模式(MediatorPattern):用一个中介对象来封装一系列的对象交互,使各对象之间不需要显式地相互引用。 - 备忘录模式(MementoPattern):在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。 - [观察者模式](https://www.cnblogs.com/porotin/p/7825656.html)(ObserverPattern):定义对象间的一种一对多的依赖关系,使得当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。 - 状态模式(StatePattern):允许一个对象在其内部状态改变时改变它的行为。 - [策略模式](https://www.cnblogs.com/ysocean/p/15635852.html)(StrategyPattern):定义一系列算法,将每个算法都封装起来,并使它们可以互换。 - [模板方法模式](https://blog.csdn.net/luckykapok918/article/details/49334417)(TemplateMethodPattern):定义一个算法的骨架,将一些步骤延迟到子类中实现。 - [访问者模式](https://www.cnblogs.com/xuwujing/p/9911997.html)(VisitorPattern):表示一个作用于某对象结构中的各元素的操作,可以使新增操作更容易。 #### 介绍 设计模式总结以及java实现 具体参考见项目document目录下pattern.md #### 软件架构 本文主要用于学习设计模式以及总结各模式的使用场景 #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)