考试分值:设计模式固定4分

一、设计模式分类总览

设计模式分为三大类,共23种模式:

类型 数量 核心思想
创建型 5种 关注对象的创建过程,将对象的创建与使用分离
结构型 7种 关注类和对象的组合,处理类和对象的组合关系
行为型 11种(含责任链、备忘录) 关注对象之间的通信和职责分配

二、创建型模式(5种)

创建型模式抽象了对象的创建过程,将对象的创建与使用分离。

模式 英文名 意图关键词
简单工厂 Simple Factory 根据参数返回不同实例
工厂方法 Factory Method 子类决定实例化哪个类
抽象工厂 Abstract Factory 创建一系列相关对象
单例 Singleton 保证仅有一个实例
建造者 Builder 构建与表示分离
原型 Prototype 通过复制创建新对象

三、各模式详解

3.1 简单工厂模式(Simple Factory)—— 了解

定义:定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。

三类角色

角色 说明
工厂(核心) 负责实现创建所有产品的内部逻辑,工厂类可以被外界直接调用,创建所需的对象
抽象产品 工厂类所创建的所有对象的父类,封装了产品对象的公共方法,所有的具体产品为其子类对象
具体产品 简单工厂模式的创建目标,所有被创建的对象都是某个具体类的实例,要实现抽象产品中声明的抽象方法

3.2 工厂方法模式(Factory Method)

意图:定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。

核心要点

  • 定义创建对象的接口(抽象工厂)
  • 子类决定实例化哪个具体类
  • 将实例化延迟到子类

3.3 抽象工厂模式(Abstract Factory)

意图:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。

核心要点

  • 创建的是一系列相关或相互依赖的对象
  • 不需要指定具体的类
  • 适用于需要创建产品族的场景

工厂方法 vs 抽象工厂

  • 工厂方法:创建一种产品
  • 抽象工厂:创建一族产品

3.4 单例模式(Singleton)

意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。

核心要点

  • 一个类仅有一个实例
  • 提供全局访问点
  • 常见实现方式:饿汉式、懒汉式

适用场景

  • 全局配置管理器
  • 数据库连接池
  • 日志记录器

3.5 建造者模式(Builder / 生成器)

意图:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

核心要点

  • 构建过程表示分离
  • 同样的构建过程可以创建不同的表示
  • 适用于创建复杂对象的场景

3.6 原型模式(Prototype)

意图:用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。

核心要点

  • 通过**复制(克隆)**原型来创建新对象
  • 避免重复创建相似对象的开销
  • Java中通过实现 Cloneable 接口实现

四、创建型模式对比总结

模式 核心思想 适用场景
简单工厂 一个工厂根据参数创建不同产品 产品种类较少,创建逻辑简单
工厂方法 定义接口,子类决定实例化哪个类 需要灵活扩展产品种类
抽象工厂 创建一系列相关对象 需要创建产品族
单例 保证仅有一个实例 全局唯一对象
建造者 构建与表示分离 创建复杂对象
原型 通过复制原型创建新对象 创建对象开销较大

五、考试重点

  1. 必背各模式的意图描述(考试常考模式识别)
  2. 工厂方法 vs 抽象工厂的区别
  3. 单例模式的特点和应用场景
  4. 简单工厂的三类角色:工厂、抽象产品、具体产品