当前位置: 首页 > news >正文

常见设计模式

创建型模式
•  工厂模式 :定义一个用于创建对象的接口,但让子类决定实例化哪一个类。它的优点是将对象的创建和使用分离,符合开闭原则,但会增加系统复杂度。
•  抽象工厂模式 :提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。优点是将具体类的创建推迟到子类,使系统易于扩展新类型,但系统会变得复杂,且新产品类不利于扩展。
•  建造者模式 :将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。优点是可以在建造过程中使用相同的构建过程,但会导致系统中出现大量具体建造类。
•  原型模式 :用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。优点是复制对象比创建新对象更高效,但需要为每种原型实现克隆方法,且当类的构造函数比较复杂时不能使用。
•  单例模式 :保证一个类仅有一个实例,并提供一个访问它的全局访问点。优点是无法通过 new 创建多个实例,但无法灵活地控制单例类的创建位置。
结构型模式
•  适配器模式 :将一个类的接口转换成另一个接口,使得原本由于接口不兼容而不能一起工作的类可以协作。优点是明确了接口转换的意图,但会增加类的数量。
•  桥接模式 :将抽象部分与它的实现部分分离,使它们可以独立地变化。优点是抽象和实现可以独立扩展,但会增加类的数量。
•  装饰模式 :允许动态地给对象添加一些额外的职责,而无须改变原有对象的结构。优点是灵活、动态地为对象添加功能,但可能会产生大量小对象。
•  组合模式 :将对象组合成树形结构以表示“部分 - 整体”的层次结构,使得用户可以以一致的方式处理单个对象和组合对象。优点是统一单个和组合对象的处理,但会增加类的数量。
•  外观模式 :为子系统中的一组接口提供一个统一的外部接口,使得子系统更容易使用。优点是简化了用户与子系统的交互,但会增加设计复杂度。
•  享元模式 :运用共享技术有效地支持大量细粒度的对象。优点是节省内存,但会增加共享对象的复杂度。
•  代理模式 :为其他对象提供一种代理以控制对这个对象的访问。优点是更灵活地控制对对象的访问,但会影响性能。
行为型模式
•  策略模式 :定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。优点是算法可以自由切换,但会增加类和对象的数量。
•  模板方法模式 :定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。优点是将不变部分和可变部分的代码分离,但会增加子类数量。
•  命令模式 :将一个请求封装为一个对象,从而使用户可以用不同的请求对客户进行参数化。优点是灵活的请求处理方式,但会增加类的数量。
•  迭代器模式 :提供一种顺序访问聚合对象元素的方法,而不暴露其内部的表示。优点是提供了统一的遍历方式,但会增加类的数量。
•  观察者模式 :定义对象之间的一对多依赖关系,当其中一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。优点是实现了主题与观察者的松耦合,但可能会导致响应链过长。
•  中介者模式 :用一个中介对象来封装一系列的对象交互,使各对象不需要显式地相互引用,从而使其耦合松散。优点是降低了对象之间的耦合,但中介者会变得复杂。
•  备忘录模式 :在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。优点是很好地保存和管理了对象的状态,但可能会消耗大量资源。
•  状态模式 :允许一个对象在其内部状态改变时改变它的行为,看起来好像改变了它的类。优点是将状态转换显示化,但会增加类和对象的数量。
•  访问者模式 :表示一个作用于某对象结构中的各元素的操作,使得用户可以在不改变各元素的类的前提下定义作用于这些元素的新操作。优点是增加了新的操作而无须修改类,但很难修改元素的层次结构。

 

相关文章:

  • Github 2025-04-19Rust开源项目日报 Top10
  • 清华《数据挖掘算法与应用》K-means聚类算法
  • Redis--主从复制
  • 记录一次项目中使用pdf预览过程以及遇到问题以及如何解决
  • 【Bluedroid】蓝牙存储模块配置管理:启动、读写、加密与保存流程解析
  • Unity webgl 获取图片或视频数据
  • UI键盘操作
  • 机器学习+深度学习
  • 开发基于python的商品推荐系统,前端框架和后端框架的选择比较
  • 青少年编程与数学 02-016 Python数据结构与算法 30课题、数据压缩算法
  • 基于DeepSeek与Excel的动态图表构建:技术融合与实践应用
  • 平均池化(Average Pooling)
  • 【绘制图像轮廓】图像处理(OpenCV) -part7
  • Fastdata极数:全球AR/VR行业发展趋势报告2025
  • spring-batch批处理框架(1)
  • 面向新一代扩展现实(XR)应用的物联网框架
  • 【Matlab】中国沿岸潮滩宽度和坡度分布
  • PH热榜 | 2025-04-19
  • PHP+MYSQL开发一个简易的个人博客(一)
  • 第2期:控制流程语句详解(条件判断与循环)
  • 观察|美军在菲律宾部署新导弹,试图继续构建“导弹链”
  • 皓元医药郑保富:共创、共赢、共享,跨域协作推动生物医药创新
  • 中国三项文献遗产新入选《世界记忆名录》
  • 云南景洪回应“游客打车遭临时加价并拒载”:对司机顶格罚款500元并停运学习
  • 鸿蒙智行第五界“尚界”来了:首期投入60亿元,首款车秋季上市
  • 国家统计局:民营经济展现出强大的创新活力、潜力和市场竞争力