对于设计模式,相信大多数人都有了解,或为了面试,或为了实际开发,但是对于大多数人来说,实际开发中,真正用设计模式的地方,少之又少。最主要的原因,还是因为我们对设计模式并未真正的理解。那么,如何理解设计模式呢?

设计模式就是那些大佬经验设计的总结(情境中遇到问题而经过证实的一个解决方案)。针对某些特定的场景,去使用特定的设计模式,能让代码更简洁,也可重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式有23种,总体来说,设计模式分为三大类:

创建型模式(五种):工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式

结构型模式(七种):适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式

行为型模式(十一种):策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式

以上标红的设计模式,是需要我们特别掌握的,面试最容易问到。那么,实际开发过程中,你用了什么设计模式呢?

1)实际开发中,我使用了单例模式,比如系统要求一个对象只能产生一次,比如设计一个单例类,负责所有数据表的映射处理。

意图(核心):保证一个类仅有一个实例,并提供一个访问该实例的全局访问点。

主要解决:一个全局使用的类频繁地创建与销毁。

何时使用:当您想控制实例数目,节省系统资源的时候。

如何解决:判断系统是否已经有这个单例,如果有则返回,如果没有则创建。

关键代码:构造函数是私有的。

常见应用场景:
1)在项目种加载配置文件的类,一般也只是一个对象,没有必要重复加载。

2)项目中的数据库连接池,一般也是单例模式。

3)Spring中的每个bean默认也是单例,优点是方便Spring容器管理。

4)Springmvc中,控制器对象也是单例。

5)在Servlet编程中,每个servlet也是单例。

6)

优点:单例模式只生成一个实例,减少了系统开销。

常见的设计模式有哪些?实际开发中你用了什么设计模式?相关推荐

  1. 前端开发中常用的几种设计模式

    设计模式概览 设计模式是对软件设计开发过程中反复出现的某类问题的通用解决方案.设计模式更多的是指导思想和方法论,而不是现成的代码,当然每种设计模式都有每种语言中的具体实现方式.学习设计模式更多的是理解 ...

  2. 前端面试必会的设计模式以及在前端开发中应用

    为什么要使用设计模式呢?有什么优点. 是一套被反复使用,多数人知晓,经过分类 ,代码设计经验的总结 目的:为了代码的可重用性,让代码更容易被他人理解,保证代码的可用性. 创建型设计模式 单例模式 保证 ...

  3. Android开发中无处不在的设计模式——动态代理模式

    继续更新设计模式系列.写这个模式的主要原因是近期看到了动态代理的代码. 先来回想一下前5个模式: - Android开发中无处不在的设计模式--单例模式 - Android开发中无处不在的设计模式-- ...

  4. 常用设计模式在实际开发中的应用

    常用设计模式在实际开发中的应用 一.设计模式的定义 二.设计模式的分类 三.面向对象七大原则 四.设计模式在实际开发中的应用 1.原型模式 2.模板模式 3.建造者模式 4.原型模式与模板方法模式和建 ...

  5. 前端开发中的MCRV模式

    针对前端开发中基于ajax的复杂页面开发所面临的代码规模大,难以组织和维护,代码复用性.扩展性和适应性差等问题,本文尝试以MVC思想为基础,结合Web前端开发中内容-结构-表现-行为相分离的开发标准, ...

  6. Android开发中常见的设计模式

    对于开发人员来说,设计模式有时候就是一道坎,但是设计模式又非常有用,过了这道坎,它可以让你水平提高一个档次.而在android开发中,必要的了解一些设计模式又是非常有必要的.对于想系统的学习设计模式的 ...

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

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

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

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

  9. 开发中最常使用到那些设计模式?

    工厂设计模式和单例模式就不多说了,比较常见. 装饰者模式,用以增强类中的某个方法,比如io流里的BufferedInputStream内置缓冲区来提高拷贝的效率 观察者模式用来代码的解耦,这个开发用的 ...

最新文章

  1. LabVIEW图像模式匹配(基础篇—11)
  2. R语言ggplot2可视化增加轴标签(ticks)和轴标题(title)之间的距离实战
  3. java导出多个excel并打成zip包
  4. mysql using filesort_Mysql执行计划中的Using filesort
  5. RAID 0、1、5、1+0总结
  6. [区块链与密码学][王小云院士][部分PPT][20200507]
  7. 学期计算机教案,学年第2学期课程教案-计算机组成原理-陈立伟
  8. 微型计算机由5大部分,微机原理答案 (5)
  9. 如何解决常见的 Active Directory 复制错误
  10. Linux 命令(90)—— which 命令
  11. unix/linux命令参考
  12. php两数相乘,PHP运算符
  13. 鹏芯U盘(UDK2008)意外断电后修复
  14. niceScroll.js
  15. python字体大小设置苹果电脑_如何调整Mac字体大小Mac字体大小调整方法
  16. 交换机日志删除_锐捷交换机记录日志到flash功能详解 | 19号系统
  17. 21 年年度最佳开源软件!
  18. 基于微信小程序的毕业设计题目(34)PHP小说平台小程序(含开题报告、任务书、中期报告、答辩PPT、论文模板)
  19. 应用之星破除行业门槛 零成本开发手机应用
  20. OpenGL和DirectX是什么?

热门文章

  1. 一文详解:为什么隐私智能合约是Web3的未来
  2. 计算机辅助技术英语,电子计算机辅助技术(CAD)
  3. 抓取中国天气网当前时段所有城市的天气数据(python+xpath)
  4. 红米4鸿蒙系统刷机包,小米红米(移动版)刷机包 基于官方4.2.1 极简稳定纯净 完整root权限 V4.0...
  5. python匿名函数调用_python之内置函数,匿名函数
  6. Windows上解压缩版MySQL配置
  7. MinIO客户端mc基础命令学习
  8. egret可以用php做后端吗,Egret引擎开发指南之创建项目_node.js
  9. 机器学习中的三种误差
  10. AAC音频压缩(转载)