博客
关于我
设计模式——概述
阅读量:550 次
发布时间:2019-03-09

本文共 1181 字,大约阅读时间需要 3 分钟。

掌握设计模式的核心思想与实践指南

设计模式基础

设计模式是程序员在开发软件过程中,总结的最佳实践经验。它们是解决常见软件设计问题的通用方案,旨在提高系统的可维护性、通用性和扩展性。

设计模式的本质优势在于通过遵循标准化的模式设计,可以降低软件复杂度,同时提高代码的质量。以下是一些常见的设计模式类型,每一种模式都能解决特定类型的问题。

设计模式分类

创 建 型模式

单例模式:

  • 通过静态方法确保一个类内始终只有一个实例。
  • 典型场景:数据库连接池中单例实例的管理。

抽象工厂模式:

  • 提供统一的接口,客户端按需调用不同实现。
  • 典型场景:切换不同配置下的产品生产。

原型模式:

  • 创建复杂对象时,通过拷贝已有实例来节省资源。
  • 典型场景:创建大量对象时的性能优化。

建造者模式:

  • 将对象的构建过程抽象,为不同的构建逻辑提供扩展空间。
  • 典型场景:复杂对象的业务流程自动化。

工厂方法模式:

  • 由工厂类决定对象的创建类型。
  • 典型场景:不同的产品线管理。

结 构 型模式

适配器模式:

  • 实现接口转换,解决不同组件的兼容性问题。
  • 典型场景:系统 Middleware 与旧系统集成。

桥接模式:

  • 分离接口和实现,减少直接耦合。
  • 典型场景:持久化层与业务逻辑分离。

装饰模式:

  • 细节性的功能增强,通过动态组合方式实现。
  • 典型场景:加密功能的动态切换。

组合模式:

  • 组合多个对象,完成复杂任务。
  • 典型场景:菜单单项与多选项的组合管理。

外观模式:

  • 提供统一的入口接口,抽象封装内部细节。
  • 典型场景:复杂组件的简化使用。

享元模式:

  • 通过共享实例提高资源利用效率。
  • 典型场景:资源密集型场景下的内存管理。

代理模式:

  • 提供额外功能或控制访问权限。
  • 典型场景:日志记录与访问控制。

行 为 型模式

模板方法模式:

  • 提供算法框架,子类可自定义实现。
  • 典型场景:通用业务逻辑的多态化实现。

命令模式:

  • 调用方法的参数化设计,支持 undo 功能。
  • 典型场景:事务处理的回滚控制。

访问者模式:

  • 遍历对象树时定义操作规则。
  • 典型场景:UI 组件的批量处理。

迭代器模式:

  • 提供统一的遍历接口,符合同一化访问逻辑。
  • 典型场景:集合数据的安全迭代访问。

观察者模式:

  • 发生变化的对象通知多个关注者。
  • 典型场景:事件发布订阅机制实现。

中介者模式:

  • 封装对象之间的交互,解除直接耦合。
  • 典型场景:复杂泛块式架构的划分。

备忘录模式:

  • 在对象生命周期外部保存内部状态。
  • 典型场景:数据恢复能力的增强。

解释器模式:

  • 解析明确的语言文法和语法。
  • 典型场景:自定义脚本解析系统。

状态模式:

  • 对于状态变化设计灵活的行为控制。
  • 典型场景:用户权限状态机制设计。

策略模式:

  • 提供不同算法的封装选择。
  • 典型场景:行为控制多算法选择。

职责链模式:

  • 通过链式结构解除直接调用耦合。
  • 典型场景:任务流程自动转发处理。

转载地址:http://ykgiz.baihongyu.com/

你可能感兴趣的文章
bat 命令返回结果_【批处理】带你入门命令行
查看>>
c++ string取子串_Integer与String的设计哲学
查看>>
c++ 数组批量赋值_数组之间不能赋值?穿个马甲吧!
查看>>
cad模糊查询符号_mysql 正则模式和like模糊查询
查看>>
continue可以用if判断里面吗_谁能说说if()else()里的continue是干嘛的?
查看>>
ctrl c 和 ctrl v 不能用了_神奇操作,原来CTRL键还能这么用
查看>>
cytoscape安装java_Cytoscape史上最全攻略
查看>>
c语言程序设计年历显示,C语言程序设计报告《万年历》.doc
查看>>
C语言程序设计梁海英答案,1.5 习题
查看>>
c语言编写单片机中断,C语言AVR单片机中断程序写法
查看>>
#pragma region、{}
查看>>
ddr2的上电顺序_S5PV210 DDR2初始化 28个步骤总结
查看>>
deque stack java_「集合系列」- 初探 java 集合框架图
查看>>
easyexcel 导出 代码翻译converter_【starter推荐】简单高效Excel 导出工具
查看>>
echarts 如何在一条柱形显示两个数字_干货 | 如何快速制作数据地图?让你的可视化逼格再高一级!...
查看>>
eclipse设置utf8编码_记住没:永远不要在 MySQL 中使用 UTF8
查看>>
eclipse里source的快捷方法_Eclipse快捷键/快捷操作汇总
查看>>
elasticsearch 查询_Elasticsearch地理信息存储及查询之Geo_Point
查看>>
embedding层_【预估排序】Embedding+MLP: 深度学习预估排序通用框架(一)
查看>>
excel中最常用的30个函数_Excel玩转数据分析常用的43个函数!
查看>>