当前位置:网站首页>【翠花学习单例模式】项目框架升级之单例模式及统一异常处理
【翠花学习单例模式】项目框架升级之单例模式及统一异常处理
2022-08-09 13:23:00 【青鸟Bug爱好者】
优点:
可以对资源进行重复利用,节约重复创建和销毁的成本,从而降低服务器压力,提高程序效率。
实现单例模式的三个关键点:
一个类只有一个实例。
自行创建实例对象。
对外提供实例对象。
示例一:饿汉式写法
饿汉可以理解为当前应用程序很“饥饿”, 需要立即获取到类的实例对象,即在类加载的时候就完成了实例的创建工作。因此类加载速度相对较慢,不过第一次获取实例会很快。因为饿汉模式是在类初始化时就自行实例化,所以不存在线程安全问题。


示例二:懒汉式写法一
懒汉式是懒加载的意思,即在类加载时不创建其实例,而是被调用时再创建实例。
存在线程安全问题


懒汉式写法二
在提供获取实例的方法上加上同步锁,效率低,但不存在线程安全问题


懒汉式写法三
在提供获取实例的方法内部加上同步锁,效率高,但是存在线程安全问题


懒汉式写法四
在提供获取实例的方法里加上双重校验锁(DCL)
不存在线程安全问题,效率高


懒汉式写法五
加上静态内部类
静态内部类加载类本身并不需要同时加载内部类,在需要实例化该类时才触发内部类的加载以及本类的实例化,做到了延时加载(懒加载),节约内存。同时因为JVM会保证一个类的初始化方法执行的线程安全,从而保证了实例在全局的唯一性。

如果说懒汉式写法是“时间转换空间”,那么饿汉式写法就是“空间转换时间”,因为一开始就创建了实例,所以每次使用时,直接返回该实例即可。
异常处理
在实际环境中,应用程序运行期间难免抛出异常,开发人员可以根据实际情况捕获异常自行处理,也可以使用Spring MVC框架提供的HandlerExceptionResolver进行处理。
对于异常处理,一般分为局部异常处理和全局异常处理,注意,此异常处理为代码层面的错误。
局部异常处理:
在你所设置的定时器里加上如下方法,即可做该定时器的异常处理。

全局异常处理
在spring配置文件中写上如下代码,即为全局异常处理。

局部异常处理大于全局异常处理。
一般统一异常处理是代码层面的错误不应该让客户看到,客户看到的只能是处理页面而非是报错页面,所以会用到异常处理,在测试阶段不需要此异常处理。
404异常处理:
在web.xml文件里加上如下代码即可。

边栏推荐
猜你喜欢
随机推荐
Q_06_03 表达式
程序员的七夕怎么过?不会是写代码吧
RobotFramework 之 Evaluate
RobotFramework简介
浅谈CQRS模式
12.cuBLAS开发指南中文版--cuBLAS中的Level-1函数asum()和axpy()
NC53 删除链表的倒数第n个节点
Firewalld防火墙基础
openharmony容器组件之GridContainer
目标检测类间不平衡问题
DCT变换与反变换
将 .json 格式 转换成 .xml格式
Where to go to IOE-EBS
ODA一体机有什么缺点
openharmony容器组件之Badge
vim常用命令
X264性能优化
蓝桥历届真题-门牌制作
操作系统迁移实战之在openEuler上部署MySQL数据库
Jetpack Compose - the use of Image (picture)









