Spring用了哪些设计模式?

Posted JustJavaIt

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring用了哪些设计模式?相关的知识,希望对你有一定的参考价值。

设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。总共有 23 种设计模式

使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。

Spring用了哪些设计模式?

1)工厂模式

2)单例模式

3)适配器模式

4)装饰器模式

5)代理模式

6)观察者模式

7)策略模式

8)模板模式

分析:

工厂模式

平常大家生成简单对象的时候,只需要new一个对象就可以了,如果需要生成复杂对象,那么就可以使用工厂模式。好比项目中,当用户不知道最后系统采用哪一类数据库,以及数据库可能有变化时。

举个例子好比您需要一辆汽车,可以直接从工厂里面提货,而不用去管这辆汽车是怎么做出来的,以及这个汽车里面的具体实现。

用具体的代码设计讲解

优点: 1、一个调用者想创建一个对象,只要知道其名称就可以了。 2、扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。 3、屏蔽产品的具体实现,调用者只关心产品的接口。

缺点:每次增加一个产品时,都需要增加一个具体类和对象实现工厂,使得系统中类的个数成倍增加,在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖。这并不是什么好事。

单例模式

如果一个全局使用的类需要频繁地创建与销毁,那么我们可以用单例模式来减少了内存的开销。

Java中单例模式定义:“一个类有且仅有一个实例,并且自行实例化向整个系统提供。”比如一个电脑有两台打印机,在输出的时候就要处理不能两台打印机打印同一个文件

显然单例模式的要点有三个;一单例类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。

从具体实现角度来说,就是以下三点:一是单例模式的类只提供私有的构造函数,二是类定义中含有一个该类的静态私有对象,三是该类提供了一个静态的公有的函数用于创建或获取它本身的静态私有对象。

//要点一:单例类只能有一个实例。
//单例模式的类只提供私有的构造函数,这样该类就不会被实例化 
private SingleObject(){}

//要点二:单例类必须自己创建自己的唯一实例。
//创建一个该类的静态私有对象 
private static SingleObject instance = new SingleObject();

//要点三:单例类必须自行向整个系统提供这个实例。
//提供了一个静态的公有的函数用于创建或获取它本身的静态私有对象
 public static SingleObject getInstance(){ 
return instance;
}

适配器模式

如果需要让任何两个没有关联的类一起运行,提高类的复用性和透明性,灵活性,那么可以用适配器模式,举个实例,TF卡插入读卡器可以转换成SD卡,此时读卡器就作为内存卡和笔记本之间的适配器。

举代码实例,笔记本通过读卡去读取TF卡

https://www.runoob.com/design-pattern/adapter-pattern.html

在这种模式下,计算机并不需要知道具体是什么卡,只需要负责操作接口即可,具体操作的什么类,由适配器决定。

装饰器模式

一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀。如果我们在不想增加很多子类的情况下扩展类,那么就可以用装饰器模式。

参考:

https://www.runoob.com/design-pattern/design-pattern-tutorial.html

https://www.jianshu.com/p/ace7de971a57

以上是关于Spring用了哪些设计模式?的主要内容,如果未能解决你的问题,请参考以下文章

提效小技巧——记录那些不常用的代码片段

thinkphp5用了哪些设计模式

框架到底用了哪些设计模式?

spring mvc 常用注解详解

片段和活动之间的核心区别是啥?哪些代码可以写成片段?

Spring中用到了哪些设计模式