码迷,mamicode.com
首页 > 其他好文 > 详细

单列模式

时间:2018-02-11 18:13:04      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:构造函数   post   int   main   返回   on()   函数   blog   else   

单列模式

    一、单列模式有:懒汉模式、饿汉模式、双重锁模式

        1、懒汉模式:在第一次请求的时候才创建实例,并且第一次创建后就不能再创建该实例

        2、饿汉模式:在类加载的时候就创建实例

        3、双重锁模式:双重锁模式其实就是懒汉模式的双重锁模式,也是三种模式中效率最高的模式

 二、创建单列模式的步骤:

        1、创建一个私有的静态变量

        2、创建一个私有的构造方法

        3、创建一个公有的静态方法,并返回实例

    三、代码示例

        1、懒汉模式

package com.singleton;
/**
* 单列模式,懒汉模式,在第一次请求的时候创建实例,并且第一次创建实例后就不能在创建该实例
* @author Administrator
*
*/
public class Singleton1 {
//创建一个私有的静态变量
private static Singleton1 singleton1 = null;
//创建一个私有的构造方法
private Singleton1(){

}
//创建一个共有的静态方法,并返回该实例
public static Singleton1 getSingleton(){
if(singleton1 == null){
singleton1 = new Singleton1();
System.out.println("创建一个Singleton实例");
}else{
System.out.println("已经创建Singletong实例了,不能再创建");
}
return singleton1;
}
//测试
public static void main(String[] args) {
//测试懒汉模式
Singleton1 s = Singleton1.getSingleton();
System.out.println("第一次--->" + s);
System.out.println("第二次--->" + Singleton1.getSingleton());
System.out.println("第三次--->" + Singleton1.getSingleton());
}

}

 

2、饿汉模式

package com.singleton;
/**
* 单列模式,饿汉模式,类加载的时候就创建实例
* @author Administrator
*
*/
public class Singleton2 {
//创建私有的静态变量,并创建实例
private static Singleton2 singleton2 =new Singleton2();
//创建私有的构造方法
private Singleton2(){
System.out.println("构造函数执行了");
}
//创建一个共有的静态方法,并返回实例
public static Singleton2 getSingleton2(){
return singleton2;
}

//测试饿汉模式
public static void main(String[] args) {
Singleton2 s2 = Singleton2.getSingleton2();
System.out.println(s2);
System.out.println(Singleton2.getSingleton2());
System.out.println(Singleton2.getSingleton2());
}
}

 

3、双重锁模式

package com.singleton;
/**
* 单列模式,双重锁模式
* @author Administrator
*
*/
public class Singleton3 {
//创建一个私有的静态变量
private static Singleton3 singleton3 = null;
//创建一个私有的构造方法
private Singleton3(){
System.out.println("构造函数开始!");
}
//创建一个公有的静态方法,并返回实例
public static synchronized Singleton3 getSingleton3(){
if(singleton3 == null){
synchronized (Singleton3.class) {
if(singleton3 == null){
singleton3 = new Singleton3();
}
}
}
return singleton3;
}

//测试双重锁模式
public static void main(String[] args) {
Singleton3 s3 = Singleton3.getSingleton3();
System.out.println(s3);
System.out.println(Singleton3.getSingleton3());
System.out.println(Singleton3.getSingleton3());

}
}

单列模式

标签:构造函数   post   int   main   返回   on()   函数   blog   else   

原文地址:https://www.cnblogs.com/j120zjb/p/8442171.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!