23种设计模式的分类和应用场景总结【设计模式】
- 设计模式分类
- 创建型模式
- 结构型模式
- 行为型模式
- 设计模式的几种原则
- 应用场景总结
- 各种模式的详细介绍
- 创建型模式
设计模式分类
23种设计模式可以分为三大类:创建型模式、结构型模式和行为型模式。
创建型模式
🍊创建型模式:提供了一种创建对象的最佳方式。这些模式涉及到如何实例化对象,并且隐藏了实例化的细节。创建型模式包括:
- 工厂模式(Factory Pattern)
- 抽象工厂模式(Abstract Factory Pattern)
- 建造者模式(Builder Pattern)
- 原型模式(Prototype Pattern)
- 单例模式(Singleton Pattern)
结构型模式
🍋结构型模式:主要关注类和对象的组合。结构型模式描述如何将类或对象按某种布局组成更大的结构。结构型模式包括:
- 适配器模式(Adapter Pattern)
- 桥接模式(Bridge Pattern)
- 组合模式(Composite Pattern)
- 装饰器模式(Decorator Pattern)
- 外观模式(Facade Pattern)
- 享元模式(Flyweight Pattern)
- 代理模式(Proxy Pattern)
行为型模式
🍏行为型模式:主要关注对象之间的通信。行为型模式描述了类和对象如何交互,以及他们的行为是怎样的。行为型模式包括:
- 职责链模式(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)
设计模式的几种原则
设计模式通常遵循以下几个原则:
- 单一职责原则(Single Responsibility Principle):一个类或方法应该只负责一项职责。
- 开放封闭原则(Open-Closed Principle):一个软件实体应该对扩展开放,对修改关闭。
- 里氏替换原则(Liskov Substitution Principle):所有引用基类的地方都可以替换成子类。
- 接口隔离原则(Interface Segregation Principle):多个特定的接口比一个通用的接口更好。
- 依赖倒置原则(Dependency Inversion Principle):高层模块不应该依赖于低层模块,二者都应该依赖于抽象。
应用场景总结
设计模式是一种在软件设计中用于解决常见问题的方法。它们提供了一组可重用的设计,可以被用来解决软件设计中的各种问题。下面是23种常见的设计模式,以及它们的适用场景:
🍊1️⃣工厂模式:在这种模式中,一个类用于创建另一个类的实例。这种模式适用于在不知道具体实现细节的情况下创建对象的场景。
🍊2️⃣抽象工厂模式:这种模式提供了一种方法来创建相关或依赖对象的家族,而不需要指定它们的具体类。它适用于需要创建多个不同类型的对象的场景。
🍊3️⃣单例模式:这种模式确保某个类只有一个实例,并提供一个全局访问点来访问它。这种模式适用于需要控制实例数量的场景。
🍊4️⃣建造者模式:这种模式允许将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。它适用于需要生成复杂对象的场景。
🍊5️⃣原型模式:这种模式是通过复制一个现有对象来生成新对象的。它适用于需要快速创建大量同类对象的场景。
🍋6️⃣代理模式:这种模式为另一个对象提供了一个替身或占位符,以便控制对这个对象的访问。它适用于需要在访问某个对象时增加额外控制的场景。
🍋7️⃣适配器模式:这种模式允许将一个类的接口转换成另一个接口,以便于不兼容的类可以一起工作。它适用于需要让两个不兼容的类一起工作的场景。
🍋8️⃣桥接模式:这种模式将抽象部分和实现部分分离,以便它们可以独立变化。它适用于需要将一个类的抽象部分和实现部分独立改变的场景。
🍋9️⃣组合模式:这种模式允许将对象组成树形结构来表现“整体/部分”层次结构。它适用于需要表示树形结构的场景。
🍋1️⃣0️⃣装饰模式:这种模式允许在不改变现有对象的情况下动态地给它们添加新的职责。它适用于需要动态地为对象添加新职责的场景。
🍋1️⃣1️⃣外观模式:这种模式提供了一个统一的接口,用来访问子系统中的一群接口。它适用于需要为一个复杂的子系统提供一个简单的接口的场景。
🍋1️⃣2️⃣享元模式:这种模式允许共享对象,以便最大限度地减少内存占用。它适用于需要在多个地方共享大量细粒度对象的场景。
🍏1️⃣3️⃣策略模式:这种模式定义了一组算法,并将它们封装起来,使它们可以相互替换。它适用于需要在不同情况下使用不同算法的场景。
🍏1️⃣4️⃣模板方法模式:这种模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。它适用于需要在不改变算法结构的情况下重定义算法中的某些步骤的场景。
🍏1️⃣5️⃣观察者模式:这种模式定义了对象之间的一对多依赖,以便当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。它适用于需要在对象之间松散耦合的场景。
🍏1️⃣6️⃣迭代器模式:这种模式提供了一种方法来访问一个容器对象中各个元素,而又不暴露该对象的内部细节。它适用于需要为容器对象提供多种遍历方式的场景。
🍏1️⃣7️⃣中介者模式:这种模式用一个中介对象来封装一系列的对象交互,使各对象不需要显式地相互引用,从而使耦合松散,而且可以独立地改变它们之间的交互。它适用于需要在多个对象之间松散耦合的场景。
🍏1️⃣8️⃣解释器模式:这种模式定义了一个语言的文法,并且建立一个解释器来解释该语言中的句子。它适用于需要定义一个语言并为该语言实现一个解释器的场景。
🍏1️⃣9️⃣状态模式:这种模式允许一个对象在其内部状态改变时改变它的行为。它适用于需要根据对象的状态来改变它的行为的场景。
🍏2️⃣0️⃣访问者模式:这种模式把作用于某个对象结构中各元素的操作分离出来封装成独立的类,使其在不改变各元素的类的前提下可以添加作用于这些元素的新操作。它适用于需要在不改变各元素的类的前提下定义对这些元素的新操作的场景。
🍏2️⃣1️⃣命令模式:这种模式将一个请求封装为一个对象,以便使用不同的请求、队列或日志来参数化其他对象。它适用于需要支持命令的撤销和恢复、延迟调用或日志操作的场景。
🍏2️⃣2️⃣责任链模式:这种模式为请求创建了一个接收者对象的链,每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,它会把相同的请求传给下一个接收者,依此类推。它适用于需要在多个对象之间松散耦合的场景,并且希望在不明确指定接收者的情况下,向多个对象中的一个提交一个请求的场景。
🍏2️⃣3️⃣备忘录模式:这种模式提供了一种方法来在不破坏封装性的情况下获取一个对象的内部状态,并在需要的时候将对象恢复到先前的状态。
以上就是23种常见的设计模式的应用场景。这些模式都有各自的优点和适用场景,可以在适当的时候使用它们来解决软件设计中的问题。
各种模式的详细介绍
创建型模式
🍕工厂模式
版权声明:
原创博主:牛哄哄的柯南
博主原文链接:https://keafmd.blog.csdn.net/
个人博客链接:https://www.keafmd.top/
看完如果对你有帮助,感谢点击下面的点赞支持!
[哈哈][抱拳]
加油!
共同努力!
Keafmd
感谢支持牛哄哄的柯南,期待你的三连+关注~~
keep accumulate for my dream【共勉】
↓ ↓ ↓ ↓ ↓ ↓