Java与GoF-23种设计模式那不可不说的故事

设计模式概述

设计模式(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核心类库中的应用》

设计模式的关系图

在这里插入图片描述

发布了669 篇原创文章 · 获赞 1366 · 访问量 61万+

猜你喜欢

转载自blog.csdn.net/weixin_43896318/article/details/104736180