设计模式介绍

程序设计模式(Design Patterns)是软件开发中总结和提炼出来的、被反复使用的、经过验证的代码设计经验。它们为常见的软件设计问题提供了通用的解决方案。设计模式并不是具体的代码实现,而是一种可复用的设计思想和模板。常见的设计模式主要分为三大类:


一、创建型模式(Creational Patterns)

主要关注对象的创建方式,目的是将对象的创建与使用分离。常见的有:

  1. **单例模式(Singleton)**

保证一个类只有一个实例,并提供全局访问点。

  1. **工厂方法模式(Factory Method)**

定义一个用于创建对象的接口,让子类决定实例化哪一个类。

  1. **抽象工厂模式(Abstract Factory)**

提供一个创建一系列相关或相互依赖对象的接口。

  1. **建造者模式(Builder)**

将一个复杂对象的构建与它的表示分离,使同样的构建过程可以创建不同的表示。

  1. **原型模式(Prototype)**

通过复制现有的实例来创建新的实例,而不是通过 new 操作。


二、结构型模式(Structural Patterns)

关注类和对象的组合,解决更大的结构问题。常见的有:

  1. **适配器模式(Adapter)**

将一个类的接口转换成客户希望的另一个接口,实现类之间的兼容。

  1. **桥接模式(Bridge)**

将抽象部分与实现部分分离,使它们可以独立变化。

  1. **组合模式(Composite)**

将对象组合成树形结构以表示"部分-整体"的层次结构。

  1. **装饰器模式(Decorator)**

动态地给一个对象添加一些额外的职责。

  1. **外观模式(Facade)**

为子系统中的一组接口提供一个统一的高层接口。

  1. **享元模式(Flyweight)**

运用共享技术有效地支持大量细粒度的对象。

  1. **代理模式(Proxy)**

为其他对象提供一种代理以控制对这个对象的访问。


三、行为型模式(Behavioral Patterns)

关注对象之间的通信和职责分配。常见的有:

  1. **责任链模式(Chain of Responsibility)**

使多个对象都有机会处理请求,避免请求的发送者和接收者之间的耦合。

  1. **命令模式(Command)**

将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化。

  1. **解释器模式(Interpreter)**

给定一种语言,定义它的文法的一种表示,并定义一个解释器。

  1. **迭代器模式(Iterator)**

提供一种方法顺序访问一个集合对象中的各个元素,而又不暴露该对象的内部表示。

  1. **中介者模式(Mediator)**

用一个中介对象来封装一系列的对象交互。

  1. **备忘录模式(Memento)**

在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。

  1. **观察者模式(Observer)**

当一个对象状态发生变化时,依赖它的所有对象都会得到通知并自动更新。

  1. **状态模式(State)**

允许一个对象在其内部状态改变时改变它的行为。

  1. **策略模式(Strategy)**

定义一系列的算法,把它们一个个封装起来,并且使它们可以互换。

  1. **模板方法模式(Template Method)**

定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。

  1. **访问者模式(Visitor)**

封装一些作用于某种数据结构中的各元素的操作。


设计模式的好处在于:

  • 提高代码的可复用性和可维护性

  • 降低耦合度

  • 使代码更易于理解和扩展

相关推荐
qqxhb1 小时前
零基础设计模式——创建型模式 - 工厂方法模式
设计模式·简单工厂模式·工厂方法模式
飞人博尔特的摄影师12 小时前
C#开发利器:SharpBoxesCore全解析
开发语言·设计模式·系统架构·c#·.net·.net core
大咖分享课13 小时前
现代人工智能系统的实用设计模式
人工智能·设计模式
Auc2414 小时前
物流项目第五期(运费计算实现、责任链设计模式运用)
java·设计模式·策略模式
清霜之辰16 小时前
安卓开发用到的设计模式(1)创建型模式
android·设计模式·创建型模式
Fency咖啡18 小时前
《Head First 设计模式》第二章 - 笔记
笔记·设计模式
琢磨先生David18 小时前
深度解析 Java 中介者模式:重构复杂交互场景的优雅方案
java·设计模式
bao_lanlan19 小时前
兰亭妙微 | 系统界面设计优化:让复杂信息更轻松被看懂
ui·adobe·设计模式·ux
supingemail1 天前
Spring Boot 的高级特性与经典的设计模式应用
spring boot·后端·设计模式