# 设计模式总结

参考博客:https://zhuanlan.zhihu.com/p/383813877

创建型模式[Creational Pattern] 主要用于处理对象的创建,实例化对象。但是,这可能会限制在系统内创建对象的类型或数目。

  1. 单例模式
  2. 抽象工厂模式
  3. 工厂方法模式
  4. 建造者模式
  5. 原型模式

结构型模式[Structural Pattern] 处理类或对象间的组合。它将以不同的方式影响着程序,允许在补充写代码或自定义代码的情况下创建系统,而且具有重复使用性和应用性能。

  1. 适配器模式
  2. 装饰器模式
  3. 代理模式
  4. 外观模式
  5. 桥接模式
  6. 组合模式
  7. 享元模式

行为型模式[Behavioral Pattern] 描述类或对象怎样进行交互和职责分配。影响系统的状态、行为流,简化、优化并且提高应用程序的可维护性。

  1. 策略模式
  2. 模板方法模式
  3. 观察者模式
  4. 迭代子模式
  5. 责任链模式
  6. 命令模式
  7. 备忘录模式
  8. 状态模式
  9. 访问者模式
  10. 中介者模式
  11. 解释器模式

# Spring中常见的设计模式:

单例模式:Bean默认为单例模式 工厂模式:Spring使用工厂模式,通过BeanFactory和ApplicationContext来创建对象 代理模式:Spring的AOP功能用到了JDK的动态代理和CGLIB字节码生成技术 策略模式:例如Resource的实现类,针对不同的资源文件,实现了不同方式的资源获取策略

# 代理模式与装饰器模式的区别:

  1. 装饰器模式关注于在对象上动态添加新行为,而代理模式虽然也可以增加新的行为,但关注于控制对象的访问。
  2. 装饰器模式执行主体是原类;代理模式是代理原类进行操作,执行主体是代理类。
  3. 代理模式中,代理类可以对客户端隐藏真实对象的具体信息,因此使用代理模式时,我们常常在代理类中创建真实对象的实例。而装饰器模式的通常做法是将原始对象作为参数传给装饰者的构造器。也就是说。代理模式的代理和真实对象之间的对象通常在编译时就已经确定了,而装饰者能够在运行时递归地被构造。