设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。

根据设计模式的参考书 Design Patterns - Elements of Reusable Object-Oriented Software(中文译名:设计模式 - 可复用的面向对象软件元素) 中所提到的,总共有 23 种设计模式。23种设计模式分为三类:创建型模式、结构型模式和行为型模式。

创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。
结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。
行为型模式:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式(责任链模式)、访问者模式。

1. 单例模式

单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

单例模式主要是为了避免因为创建了多个实例造成资源的浪费,且多个实例由于多次调用容易导致结果出现错误,而使用单例模式能够保证整个应用中有且只有一个实例。

只需要三步就可以实现单例模式

(1) 不允许其他程序用new

23种设计模式常用模式相关推荐

  1. 23种设计模式----------代理模式(一)

    代理模式也叫委托模式. 代理模式定义:对其他对象提供一种代理从而控制对这个对象的访问.就是,代理类 代理 被代理类,来执行被代理类里的方法. 一般情况下,代理模式化有三个角色. 1,抽象的主题类(或者 ...

  2. 23种设计模式——桥接模式

    文章目录 23种设计模式--桥接模式 1.桥接模式概述 2.桥接模式结构 3.桥接模式的实现 4.桥接模式的注意事项和细节 23种设计模式--桥接模式 1.桥接模式概述 桥接模式介绍 桥接(Bridg ...

  3. 23种设计模式-工厂模式

    23种设计模式-工厂模式 前言: [我们为什么需要使用工厂模式?] /*** 在使用工厂模式之前,我们要创建 实现了相同接口的对象 都需要直接new(),如下* */@Testpublic void ...

  4. 23种设计模式——工厂模式

    文章目录 23种设计模式--工厂模式 1.工厂模式概述 2.简单工厂模式 2.1.简单工厂模式的优缺点 2.2.简单工厂模式的结构 2.3.简单工厂模式的实现 3.工厂方法模式 3.1.工厂方法模式的 ...

  5. SSM源码分析之23种设计模式(策略模式和模板模式)

    23种设计模式之策略模式和模板模式 目录 策略模式使用场景 策略模式实现 模板模式 目录 策略模式使用场景 策略模式:根据用户的需求处理数据时候需要对算法做出选择,固定的一些算法(不再发生变化的算法) ...

  6. 23种设计模式----模板方法模式----行为模式

    模板方法模式 1.模板方法模式是什么 2.模板方法的组成 3.模板方法中不同的类的行为 4.例子 4.1 例子的背景 4.2模板类--父亲寻找继承人的方式 4.3实现类----孩子类 4.4测试类-- ...

  7. 23种设计模式----原型模式----创建型模式

    原型模式 1.1什么是原型模式 1.2为什么要使用原型模式 2.原型模式的解释 3.例子 3.1例子将要实现的目标 3.2例子设计 3.3原型类 3.4具体实现的3个原型实例类 3.5管理类 3.6工 ...

  8. 23种设计模式-命令模式《三国大阅兵》

    对于许久不用的东西,容易忘记.百度许久,也未能找到自己所要. 从今日起,有些东西就记载下来,不仅方便自己,希望能帮到他人吧! 在面向对象程式设计的范畴中,命令模式(Command Pattern)是一 ...

  9. 23种设计模式-迭代器模式《三国名将》

    对于许久不用的东西,容易忘记.百度许久,也未能找到自己所要. 从今日起,有些东西就记载下来,不仅方便自己,希望能帮到他人吧! 定义 提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部 ...

最新文章

  1. 字符串作为freemarker模板的简单实现例子
  2. 云服务器 文件 传输,云服务器文件 传输
  3. linux ffmpeg加速和合并视频命令
  4. sql 存储过程中top 后面跟参数的问题
  5. 如何学习 azure_Azure的监督学习
  6. JDK 12的String :: transform方法的简要但复杂的历史
  7. mybatis中resultType取出数据顺序不一致解决方法
  8. 0.IT-解决方案-0-VOIP
  9. 嵌入式开发与单片机开发有什么区别
  10. EM算法原理解释及公式推导
  11. 新托业2020一周极限自救攻略
  12. 2021年4月12日 关于VRRP!!!
  13. html引用外部样式表的正确位置,在html文档中引用外部样式表的正确位置是什么...
  14. python按条件删除行_python – 根据条件删除行组
  15. win 通过 Distro 安装 linux 子系统
  16. VENC 通道属性配置参数理解
  17. 湖北省潜江市谷歌高清卫星地图下载
  18. 计算机多媒体的结论,计算机多媒体对初中物理教学的应用
  19. [WPF系列] 高级 调试
  20. R语言心得笔记(实时更新)

热门文章

  1. ncut算法python实现
  2. 计算机中文期刊abc类,计算机类国际期刊列表:
  3. js base64编码格式图片另存为下载
  4. @lru_cache 内置 LRU 缓存
  5. 3000三千元吃鸡电脑/主机配置推荐清单
  6. 新CPU只支持Win10 微软为市场份额不择手段?
  7. 2018四川高考数学(全国卷3)理科21题以泰勒公式为命题背景(同时深挖去年高考题)和它的另类解法的瞎谈...
  8. 旋钮编码器c代码_旋转编码器EC11驱动
  9. php rtmp服务器搭建,rtmp直播服务器的搭建(小白踩坑)
  10. 北海450值得入手吗?附带(越野萝莉)照片