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


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


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


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


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


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

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

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

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

边栏推荐
猜你喜欢
随机推荐
GridContainer of openharmony container component
pyautogui的简单操作(1)
Jetpack Compose——TextField及OutlinedTextField(文本框)的使用
富媒体在客服IM消息通信中的秒发实践
禁止输入(×),按键精灵小程序,快速上手
Q_06_05 文件结构
笔试题记录~~
Dry+Bean+Dataset R language data analysis, report in English
响应式pbootcms模板家禽饲养类网站
pytest 之 fixture参数化
Mysql的七种连接查询方法
【ClickHouse】 日志清理方法(query_log、query_thread_log)
Spark读取多目录
华为ensp静态路由、DHCP
记一次 ERROR scheduler.AsyncEventQueue: Dropping event from queue shared导致OOM
三种ThreadLocal,玩转线程变量保存与传递
Jetpack Compose - simply the basic attributes of Modifier is introduced
Zero Basic Learning CANoe Panel Design Catalog
Spark GC日志分析
浅谈CQRS模式









