设计模式内容汇总
此专题中包含7种设计原则,23种设计模式的介绍。
设计模式是一套快被写烂了的编码技巧。随便找找都能找到大量的书和博客。但是基本上都是用很大的篇幅来介绍设计模式的实现、优点、缺点等等。举的一些例子也是与实际开发基本不相干的例子。基于此,我才决定写一系列设计模式的博文,不仅要把设计模式的原理讲清楚,还要结合实际,找出实际的应用案例。如哪些设计模式用在了Spring框架或MyBatis框架中,在我的职业生涯中,哪些业务场景用了哪些设计模式解决。理论结合实践学习起来才最有效。
所以我将本系列博文命名为《设计模式实践》,在后续的文章中我将结合市面上的优秀的设计模式相关的书、国内外一些博主关于设计模式的文章以及AI来全面的分析设计模式原理及其应用,同时结合今后参与的项目,不断完善案例。给大家带一套有深度的设计模式文章。
设计原则
- 单一职责原则(Single Responsibility Principle, SRP)
- 开闭原则(Open-Closed Principle, OCP)
- 里氏代换原则(Liskov Substitution Principle, LSP)
- 依赖倒置原则(Dependency Inversion Principle, DIP)
- 接口隔离原则(Interface Segregation Principle, ISP)
- 合成复用原则(Composite Reuse Principle, CRP)
- 迪米特法则(Law of Demeter, LoD)
设计模式
- 创建型模式
- 结构性模式
- 行为型模式
- 职责链模式-Chain of Responsibility Pattern
- 命令模式-Command Pattern
- 解释器模式-Interpreter Pattern
- 迭代器模式-Iterator Pattern
- 中介者模式-Mediator Pattern
- 备忘录模式-Memento Pattern
- 观察者模式-Observer Pattern
- 状态模式-State Pattern
- 策略模式-Strategy Pattern
- 模板方法模式-Template Method Pattern
- 访问者模式-Visitor Pattern
- 空对象模式-Null Object Pattern
组合关系和聚合关系
在设计模式中经常提到组合关系和聚合关系,那么两者之间的区别是什么呢?
- **组合关系:**组合是一种强关联关系,它表示一个类包含另一个类的实例,而且这种包含关系有着相同的生命周期。也就是说,如果整体对象被销毁,那么包含在其中的部分对象也将被销毁。例如,一只鸟和它的翅膀就是组合关系,翅膀是鸟不可分割的一部分,不能脱离鸟而独立存在。
- **聚合关系:**聚合则是一种相对松散的关联关系,它表示一个类使用或拥有另一个类的实例,但这些部分可以独立于整体存在。换句话说,即使整体对象不存在了,部分对象仍然可以继续存在。例如,一台电脑和它的键盘、鼠标等外设就是聚合关系,这些外设可以在不连接到电脑的情况下独立使用。
总的来说,组合和聚合都描述了类之间的“拥有”关系,但组合强调的是部分与整体不可分离,而聚合则允许部分与整体可以分离