单例的几种常用的设计模式(面试)

 
 
/饿汉式的代码如下:
//方式一:直接new出来

public class Single01 {
private Single01 (){}
//只执行一次
private static Single01 single = new Single01 ();
public static Single01 getInstance (){
return single ;
}
}
//方式二:使用静态代码块
private static SqlSessionFactory sessionFactory ;
static {
try {
String resource = "SqlMapConfig.xml" ;

// 根据mybatis的全局配置文件构造 一个流
InputStream inputStream = Resources . getResourceAsStream ( resource );

// 创建SqlSessionFactory
sessionFactory = new SqlSessionFactoryBuilder ()
. build ( inputStream );
} catch ( IOException e ) {
e . printStackTrace ();
}
}
//懒汉式的代码如下:
public class Single02 {
//私有化构造方法是为了不让外界创建对象
private Single02 (){}
//静态的成员只执行一次,在类加载的时候执行,系统会给一个默认的初始化值null
private static Single02 single ;
public static Single02 getInstance (){
if ( single == null ){ //这个single是null的时候才创建对象
single = new Single02 ();
}
return single ;
}
}
//处理高并发的线程的懒汉式
public static SqlSessionFactory newIncetance () {
if ( sessionFactory == null ) {
//A B
synchronized ( MybatisUtils . class ) {
if ( sessionFactory == null ) {
try {
String resource = "SqlMapConfig.xml" ;

// 根据mybatis的全局配置文件构造 一个流
InputStream inputStream = Resources . getResourceAsStream ( resource );

// 创建SqlSessionFactory
sessionFactory = new SqlSessionFactoryBuilder ()
. build ( inputStream );
} catch ( IOException e ) {
e . printStackTrace ();
}
}
}
}
return sessionFactory ;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值