根据对设计模式的学习,总结出各类设计模式的使用场景,了解哪些场景下适合使用哪种设计模式来解决该场景的问题,这样才能学而致用,仅仅了解设计模式但不能实践那学了又有什么用呢?下面来看看各种设计模式的使用场景(个人理仅供参考)

一、创建模式

1.工厂方法:一个工厂通过方法创建多个产品
2.抽象工厂方法:多个工厂创建多个产品族
3.建造者模式:分解构建步骤,分步构建
4.原型模式:一个对象需要多次修改部分值,利用克隆实现
5.单例模式:只要一个实例,减少系统开销

二、结构模式

6.适配器模式:重构时,不修改已有模块,增加适配器来协调2个模块工作
7.桥接模式:开发时,jdbc,需要增加桥对象,可切换对接对象,实现不同桥功能
8.组合模式:开发时,组织机构,文档结构
9.装饰器模式:重构时,不修改已有模块,对已有模块功能进行扩展
10.外观模式:开发重构
11.享元模式:开发时,创建对象池,共享对象,减少系统开销
12.代理模式:重构时,代理目标对象执行,主要是控制目标对象方式是否执行

三、行为模式

13.责任链模式:审批流
14.命令模式:浏览器的请求方式,封装请求,分离请求者与接收者
15.解释器模式:表达式解析
16.迭代器模式:迭代器
17.备忘录模式:ghost,保存当前对象状态,用于恢复
18.中介者模式:QQ,多个构件间通信的枢纽
19.观察者模式:消息通知,广播机制,通过注册接收者,观察者发消息给多个接收者
20.状态模式:针对对象切换,将状态封装成对象,通过切换状态来用不同状态对象实现相同方法。
21.策略模式:针对方法切换,对某个方法进行切换,实现不同的实现方式。
22.模板方法模式:sitmesh,tiles,freemarker就是类似装饰模式,只不过如同模板一般,只需要关注变动的地方即可
23.访问者模式:利用多态特性

23种设计模式都适用于哪些场景?相关推荐

  1. PHP 完整实战23种设计模式

    PHP实战创建型模式 单例模式 工厂模式 抽象工厂模式 原型模式 建造者模式 PHP实战结构型模式 桥接模式 享元模式 外观模式 适配器模式 装饰器模式 组合模式 代理模式 过滤器模式 PHP实战行为 ...

  2. 面试要点之——23种设计模式及其应用场景

    设计模式主要分三个类型:创建型.结构型和行为型.  其中创建型有:      一.Singleton,单例模式:保证一个类只有一个实例,并提供一个访问它的全局访问点 :     应用场景:一个无状态的 ...

  3. 23种设计模式【全】 包含:模式定义 使用场景 实现步骤 优缺点 模式区别 UML类图 示例代码 注意项等

    23种设计模式(全) ***项目地址***:[GitHub](https://github.com/yjhroot/design-pattern) 声明 模式分类(3大类) 创建型模式(共5种) 结构 ...

  4. 23种设计模式应用场景

    23种设计模式应用场景 创建型模式 工厂方法模式: 原型模式:clone/fork子线程 建造者模式:框架组件实例化 抽象工厂模式:业务+反射 单例模式:只读单实例场景 结构型模式 装饰模式:换装软件 ...

  5. 23种设计模式的分类和应用场景总结【设计模式】

    23种设计模式的分类和应用场景总结[设计模式] 设计模式分类 创建型模式 结构型模式 行为型模式 设计模式的几种原则 应用场景总结 各种模式的详细介绍 创建型模式 设计模式分类 23种设计模式可以分为 ...

  6. Java设计模式:23种设计模式全面解析,墙都不扶就服你

    命令模式:将命令请求封装为一个对象,使得可以用不同的请求来进行参数化. 迭代器模式:一种遍历访问聚合对象中各个元素的方法,不暴露该对象的内部结构. 观察者模式:对象间的一对多的依赖关系. 仲裁者模式: ...

  7. Java开发中的23种设计模式详解(转)

    设计模式(Design Patterns) --可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

  8. 【设计模式】Java 23种设计模式对比总结

    一.设计模式的分类 创建型模式,共五种(1-5):工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种(6-12):适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组 ...

  9. 【java】java开发中的23种设计模式详解

    设计模式(Design Patterns) --可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

最新文章

  1. Hibernate Session的delete()方法
  2. Python开发者的完美终端工具
  3. 作为后端开发如何设计数据库系列文章(一)设计传统系统表结构
  4. oracle rac standby,oracle RAC数据库建立STANDBY(二)
  5. 计算机配件模拟,模拟计算机是指什么
  6. 南京趋势科技面试归来
  7. ELKF(Elasticsearch+Logstash+ Kibana+ Filebeat) 部署
  8. 423.从英文中重建数字
  9. 2023王道计算机考研数据结构第一章-绪论
  10. 计算机基础 键盘认识,电脑入门(八)、认识键盘及操作
  11. 图像处理——空间域和频率域部分图像增强学习
  12. 改变cmd窗口的前景色和背景色
  13. python tkinter 自主小项目——计算器往事
  14. 新建的web项目为什么默认访问index.jsp
  15. IBM:宏伟规划,拯救地球
  16. NYOJ 第371题 机器人II
  17. VW和VH移动端布局
  18. Android开发知识(二十二)LayoutInflater装载xml布局过程的源码解析
  19. 两个umijs/max项目使用微前端简单示例
  20. springboot+乡村图书管理系统 毕业设计-附源码191505

热门文章

  1. 【数学建模】2022亚太赛A题 结晶器熔炼结晶过程序列图像特征提取与建模分析
  2. 虚拟机安装-ubuntu
  3. python文件是什么的集合和抽象_python学习笔记(三):文件操作和集合
  4. c语言书面作业3,C语言程序设计
  5. java 节气_java计算某个日期是什么节气(24节气)
  6. 谈新手Java SE JDK 下载那个版本好!
  7. 机器学习中的三种误差
  8. 微信公众号实现“一键关注”功能
  9. 怎么把视频压缩到100MB以内
  10. 安卓9可用的性能监视器_监视应用程序生态系统的性能和可用性