1、简单工厂模式

又叫做静态工厂方法(StaticFactory Method)模式。

2、工厂方法模式

Spring使用工厂模式可以通过 BeanFactory 或 ApplicationContext 创建 bean 对象。

3、单例模式

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

单例设计模式

在我们的系统中,有一些对象其实我们只需要一个,比如说:线程池、缓存、对话框、注册表、日志的对象。事实上,这一类对象只能有一个实例,如果制造出多个实例就可能会导致一些问题的产生,比如:程序的行为异常、资源使用过量、或者不一致性的结果。

使用单例模式的好处:

对于频繁使用的对象,可以省略创建对象所花费的时间,这对于那些重量级对象而言,是非常可观的一笔系统开销;
由于 new 操作的次数减少,因而对系统内存的使用频率也会降低,这将减轻 GC 压力,缩短 GC 停顿时间。

4、适配器模式

在Spring的Aop中,使用的Advice(通知)来增强被代理类的功能。

5、包装器模式

6、代理模式

为其他对象提供一种代理以控制对这个对象的访问。

代理模式在 AOP 中的应用
AOP(Aspect-Oriented Programming:面向切面编程)能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。

Spring AOP 就是基于动态代理的,如果要代理的对象,实现了某个接口,那么Spring AOP会使用JDK Proxy,去创建代理对象,而对于没有实现接口的对象,就无法使用 JDK Proxy 去进行代理了,这时候Spring AOP会使用Cglib ,这时候Spring AOP会使用 Cglib 生成一个被代理对象的子类来作为代理

7、观察者模式

定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

8、策略模式

定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。

9、模板方法模式

定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。

10、中介者模式

中介这个词并不陌生,就是房屋中介的那个“中介”,就是中间人的意思。比如MVC模式,C(Controller控制器)是M(Model模型)和V(View视图)的中介者,在前后端交互时起到了中间人的作用。
中介者模式(Mediator),用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。

中介者模式的应用

1. 何时使用

  • 多个类相互耦合,形成网状结构时

    2. 方法

  • 将网状结构分离为星型结构

    3. 优点

  • 减少类间依赖,降低了耦合

  • 符合迪米特原则

    4. 缺点

  • 中介者会膨胀的很大,而且逻辑复杂

    5. 使用场景

  • 系统中对象之间存在比较复杂的引用关系

  • 想通过一个中间类来封装多个类的行为,而又不想生成太多的子类

    6. 应用实例

  • 联合国/WTO作为中介者协调各个国家

  • 房屋中介/机场调度系统
  • MVC框架,其中C(Contorller控制器)是M(Model模型)和V(View视图)的中介者

    7. 注意事项

  • 不应当在职责混乱时使用