java架构师学习路线-Mybatis中单例模式的介绍

图灵学院 java架构师学习路线:Mybatis中单例模式的介绍

单例模式:单例模式可确保某个类只有一个实例,并且实例化自己并将该实例提供给整个系统。此类称为单例类,该类提供全局访问方法。

java架构师学习路线

    单例模式的三个要点:一是一类只能有一个实例。另一个是它必须自己创建此实例;第三,它必须自己将此实例提供给整个系统。单例模式是对象创建模式。单例模式也是列表模式或单状态模式。

    Mybatis中有两个地方可以使用单例模式模式:ErrorContext和LogFactory,其中ErrorContext是每个线程中用来记录该线程的执行环境错误信息的单个实例,LogFactory提供给整个Mybatis。使用的日志工厂用于获取为项目配置的日志对象。设计模式的单例模式的实践,本文建议您阅读。

    ErrorContext的单例实现代码:

    publicclassErrorContext{

    privatestaticfinalThreadLocal

    privateErrorContext(){

    }

    publicstaticErrorContextinstance(){

    ErrorContextcontext=LOCAL.get();

    if(context==null){

    context=newErrorContext();

    LOCAL.set(context);

    }

    returncontext;

    }

    构造函数是private修饰,具有一个static的局部instance变量和一个获取instance变量的方法,在获取实例的方法中,先判断是否为空如果是的话就先创建,然后返回构造好的对象。

    只是这里有个有趣的地方是,LOCAL的静态实例变量使用了ThreadLocal修饰,也就是说它属于每个线程各自的数据,而在instance()方法中,先获取本线程的该实例,如果没有就创建该线程独有的ErrorContext。

原文地址:https://www.cnblogs.com/tulingxueyuan/p/14063750.html