Skip to content

Latest commit

 

History

History
140 lines (75 loc) · 3.05 KB

DesignPatterns.md

File metadata and controls

140 lines (75 loc) · 3.05 KB

设计模式加强

1️⃣简单工厂模式

如何理解简单工厂模式?

  • 通过静态方法或实例方法创建对象

  • 封装对象创建过程(基于条件的不同创建不同的具体产品)

简单工厂模式的应用场景

  • JDBC

  • Druid

  • Mybatis

简单工厂模式中的对象角色?

  • 抽象产品对象
  • 具体产品对象
  • 具体工厂对象

简单工厂模式应用分析

  • 优势&劣势
    • 优势:解耦(对象应用者和对象创建者之间的耦合),简单
    • 劣势:可扩展性比较差(创建产品对象的工厂方法不够灵活)

2️⃣工厂方法模式(Factory Method)

如何理解工厂方法模式?

  • 创建型模式(负责创建对象)
  • 工厂模式(平常所说的工厂方法模式就是工厂模式)
  • 此模式的特点就是基于抽象工厂扩展具体工厂然后创建产品对象

工厂方法模式的应用场景分析

  • Mybatis
  • Shiro
  • Spring

工厂方法模式角色分析?

  • 抽象产品(Product)

  • 具体产品(ConcreteProduct)

  • 抽象工厂(Factory)

  • 具体工厂(ConcreteFactory)

    例如:mybatis 中创建 SqlSession 对象

    ​ Spring 整合 mybatis 时,SqlSessionFactory 对象过程分析

工厂方法模式应用分析

  • 优势:相对于简单工厂更加灵活,更加适合创建具体等级结构(继承关系)的产品
  • 劣势:假如每一个抽象产品都对应一个具体工厂,那么工厂类可能比较多。

3️⃣抽象工厂(Abstract Factory)

最难!!!最复杂!!!

如何理解抽象工厂?

  • 工厂方法模式用于创建具备一定等级结构的产品

  • 抽象工厂时多个工厂方法的综合应用,因为它要创建多个具备一定等级结构的产品,我们可以将这些产品理解成产品族。

抽象工厂应用场景?

产品族 -> 多个抽象产品

  • Spring(ClienHttpRequestFactory):了解消息头,消息体对象创建

  • ....

抽象工厂对象角色分析

  • 抽象产品(Product)
  • 具体产品(ConcreteProduct)
  • 抽象工厂(Factory)
  • 具体工厂(ConcreteFactory)

抽象工厂应用分析?

  • 优势:工厂方法模式可能会产生很多个工厂类,基于此....

4️⃣建造模式(Builder)

如何理解建造模式?

建造模式的应用场景

建造模式对象角色分析

建造模式应用分析?

5️⃣单例模式(Singleton)

如何理解单例模式

单例模式中的应用场景

单例模式对象角色构成

单例模式应用分析

6️⃣适配器模式(Adapter)

  • 类适配器模式
  • 对象适配器模式

7️⃣代理模式(Adapter)

???