文章目录

  • 设计模式概述
  • GoF-23种设计模式
  • 设计模式的分类
  • 设计模式的原则
  • 设计模式在JDK的部分体现
    • Singleton
    • Factory
    • Abstract factory
    • Adapter
    • Composite
    • Decorator
    • Observer
    • Others
  • 设计模式的关系图

设计模式概述

设计模式(Design pattern)是一套可以反复使用的代码设计经验的总结。其目的是为了提高代码的可读性、可维护性。各种设计模式最核心的思想就是“适应变化”。

GoF-23种设计模式

GoF(Gang of Four)总结了23种设计模式,这也是我们一般提及的设计模式。

GoF提出的23种设计模式是对已有模式的整理、分类,为软件设计总结了宝贵的经验(这些设计经验可以被重用,但不是简单的代码重用)。

设计模式的分类

创建型(Creational) 结构型(Structural) 行为型(Behavioral)
工厂模式(Factory Method) 适配器模式(Adapter) 解释器模式(Interpreter)
模板模式(Template)
对象 抽象工厂模式(Abstract Factory)
建造者模式(Builder)
原型模式(Prototype)
单例模式(Singleton)
适配器模式(Adapter)
桥接模式(Bridge)
组合模式(Composite)
装饰器模式(Decorator)
外观模式(Facade)
享元模式(Flyweight)
代理模式(Proxy)
责任链模式(Chain of Responsibility)
命令模式(Command)
迭代器模式(Iterator)
中介者模式(Mediator)
备忘录模式(Memento)
观察者模式(Observer)
状态模式(State)
策略模式(Strategy)
访问者模式(Visitor)

设计模式的原则

  • 单一职责原则
    要把功能尽可能的细分,每一个类应该只负责一块内容或只执行一个任务。那么怎么样才算达到单 一职责了呢,那就是当一个类仅有一个引起它变化的原因时
  • 开放封闭原则
    尽量不要去修改原有的类,但却可以扩展现有的功能
  • 替换原则
    子类必须能够替换它们的基类
  • 依赖倒置原则
    高层模块不应该依赖于低层模块,二者都应该依赖于抽象;抽象不应依赖于实现细节,实现细节应 该依赖于抽象
  • 接口隔离原则
    客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上

设计模式在JDK的部分体现

Singleton

  • java.lang.Runtime#getRuntime()
  • java.awt.Toolkit#getDefaultToolkit()
  • java.awt.Desktop#getDesktop()

Factory

  • java.lang.Class#newInstance()
  • java.lang.Class#forName()
  • java.lang.reflect.Array#newInstance()
  • java.lang.reflect.Constructor#newInstance()

Abstract factory

  • java.sql.DriverManager#getConnection()
  • java.sql.Connection#createStatement()

Adapter

  • javax.swing.JTable(TableModel)
  • javax.swing.JList(ListModel)
  • java.io.InputStreamReader(InputStream)
  • java.io.OutputStreamWriter(OutputStream)

Composite

  • java.awt.Container#add(Component)
  • javax.swing.JComponent#add(Component)

Decorator

  • java.io.BufferedInputStream(InputStream)
  • java.io.DataInputStream(InputStream)
  • java.io.BufferedOutputStream(OutputStream)

Observer

  • java.util.EventListener

Others

《GoF-23种设计模式在Java核心类库中的应用》

设计模式的关系图

【Java】Java与GoF-23种设计模式相关推荐

  1. 追MM“23式”—— GOF 23种设计模式

    追MM"23式" -- GOF 23种设计模式 创建型模式 1.FACTORY 2.BUILDER 3.FACTORY METHOD 4.PROTOTYPE 5.SINGLETON ...

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

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

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

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

  4. Java开发中的23种设计模式详解

    设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于 ...

  5. GoF 23种设计模式中英文对照

    https://blog.csdn.net/shuair/article/details/121884066 1.Singleton Pattern(单例模式) Ensure a class has ...

  6. GOF 23种设计模式比喻

    ==创建型模式== 1.   =SIMPLE FACTORY=  打完篮球真累,正好边上有个小摊.  "来杯可乐."  "我要芬达."  "一瓶矿泉水 ...

  7. java 23种设计模式详解

    1. 软件设计模式意义 文章链接:http://c.biancheng.net/design_pattern/     设计模式的本质是对面向对象设计原则运用,是对类的封装.继承和多态以及类的关联关系 ...

  8. 23种设计模式-个人笔记(二)

    目录 五.23 种设计模式 1.单例模式 1.1.单例模式的定义与特点 1.2.单例模式的优点和缺点 1.3.单例模式的应用场景 1.4.单例模式的结构与实现 1.5.八种方式详解 1.6.单例模式在 ...

  9. 23种设计模式(一)

    1. 软件设计模式意义     设计模式的本质是对面向对象设计原则运用,是对类的封装.继承和多态以及类的关联关系和组合关系的充分理解.优点: 可以提高程序员的思维能力.编程能力和设计能力 使程序更加标 ...

  10. 手把手教你23种设计模式

    文章目录 相关知识 简单工厂模式(不属于GoF 23 种设计模式) 工厂方法模式 抽象工厂模式 单例模式 原型模式 建造者模式 代理模式 门面模式(外观模式) 装饰器模式 享元模式 组合模式(整体-部 ...

最新文章

  1. axios拦截器_78.1K 的 Axios 项目有哪些值得借鉴的地方
  2. 深入解读Python的unittest并拓展HTMLTestRunner
  3. 王者荣耀6月23服务器维护,王者荣耀6.23维护到什么时候?6月23日长枪掠火版本异常介绍...
  4. 985博导:如果符合这几条,你可能不适合读博!
  5. xamarin误删vEthernet(internal Ethernet Port Windows Phone Emulator) 网络设备的处理。
  6. 网络_检测公网端口是否开启
  7. Android中设置位移动画的停止
  8. python什么字体好看_10 款最佳编程字体
  9. [从零学习汇编语言] - 计算机发展历史
  10. 北斗时间周和GPS时间周计算,JAVA为例
  11. 无人机水平方向四环串级控制,竖直方向三环串级控制(2020.6.30备份)
  12. 重庆万州公交车坠江原因公布:乘客与司机激烈争执互殴致车辆失控
  13. ppt 计算机图标不见了,显示桌面图标不见了如何恢复.ppt
  14. Linux(入门基础):85---Linux单一计划任务(at服务、at、atq、atrm、batch命令)
  15. 制作MMORPG游戏需要储备哪些技术
  16. Java | interface 和 implements关键字【接口,看这篇就够了】
  17. 阿里云第三方:_身份证二要素API接口
  18. Android自定义网络状态请求页面
  19. word怎么删除空白页,Word Mac删除空白页面的图文方法
  20. 一个彷b站醒目留言的控件

热门文章

  1. C#知识点总结系列:3、C#中Delegate和Event
  2. synchronized(九)
  3. linux中 /dev/null命令
  4. php使用redis存储
  5. winfrom 从网页中通过源代码截取文章
  6. 15.6.6-sql字符串组装技巧
  7. linux gcc编译C程序 分享
  8. Shell基本命令汇总
  9. php截断上传,截断在文件包含和上传中的利用
  10. Golang——秒懂函数、参数、可变参数、匿名函数、回调函数、内置函数