跳到主要内容

设计模式

一、工厂模式

1. 简单工厂

简单工厂包含如下角色:

  • 抽象产品:定义了产品的规范 ,描述了产品的主要特性和功能
  • 具体产品:实现或者继承抽象产品的子类
  • 具体工厂:提供了产品的方法,调用者通过该方法来获取产品
  • 所有的产品都共有一个工厂,如果新增产品,则需要修改代码,违反开闭原则
  • 是一种编程习惯,可以借鉴这种编程思路

2. 工厂方法

工厂方法模式包含如下角色:

  • 抽象产品:定义了产品的规范 ,描述了产品的主要特性和功能
  • 具体产品:实现抽象产品角色定义的接口,由具体工厂来创建,它同具体工厂之间一一对应
  • 抽象工厂:提供了创建产品的接口,调用者通过它访问具体工厂的工厂方法来创建产品
  • 具体工厂:主要是实现抽象工厂中的抽象方法,完成具体产品的创建
  • 给每个产品都提供了一个工厂,让工厂专门负责对应的产品的生产,遵循开闭原则
  • 项目中用到的最多

3. 抽象工厂

抽象工厂模式是工厂方法模式的升级版本,工厂方法模式只生产一个等级的产品,而抽象工厂模式可生产多个等级的产品。

一个超级工厂创建其他工厂,该超级工厂又称为其他工厂的工厂。

  • 如果有多个纬度的产品需要配合生产时,优先建议采用抽象工厂
  • 一般的企业开发中用的较少

二、策略模式

1. 什么是策略模式

  • 策略模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响使用算法的客户
  • 一个系统需要动态地在几种算法中选择一种时,可将每个算法封装到策略中

2. 案例

  • 介绍业务
  • 提供了很多策略,都让Spring容器管理
  • 提供一个工厂:准备策略对象,根据参数提供对象

三、责任链模式

  • 为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;
  • 当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止