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

单例模式

时间:2017-10-01 16:56:49      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:创建   饿汉   需要   bsp   get   方法   值类型   静态   定义   

Java中单例模式定义:一个类有且仅有一个实例,并且自行实例化向整个系统提供。

仅有一个实例=========》创建一个静态的本类类型的成员属性

自行实例化======.====》就是要我们将此类的个构造私有化

向整个系统提供=======》创建一个供外部访问的接口(即以public修饰的返回值类型为本类类型的方法)

 

单例模式的实现方式有三种:

  懒汉式:不调用不赋值

  饿汉式:建类即赋值

  双重锁:两次synchronized

 

直接上例子:

public class Student{
    private static Student stu;//饿汉式
    
    private Student(){
    //构造方法私有化
    }
    
    public static Student newStudent(){
        if(stu==null){
            stu=new Student();//调用此方法时实例化本类的唯一对象
        }
    }
}        
public class Student2 {

    // 01.创建一个静态的本类类型的成员属性
    private static Student2 stu = new Student2(); // 饿汉式

    // 02.私有化构造 不允许有 其他的构造
    private Student2() {
    }

    // 03.创建供外部访问的接口 返回值类型是Student
    public static synchronized Student2 getInstance() {
        return stu;
    }
}
public class Student3 {

    // 01.创建一个静态的本类类型的成员属性

//双重锁
private static Student3 stu; // 02.私有化构造 不允许有 其他的构造 private Student3() { } // 03.创建供外部访问的接口 返回值 肯定是我们Student public static synchronized Student3 getInstance() { if (stu == null) { // 证明用户是第一次访问 synchronized (Student3.class) { if (stu == null) { // 再次验证对象是否为空 stu = new Student3(); } } } return stu; // 如果stu有了 直接返回 不需要再次创建 } }

 

单例模式

标签:创建   饿汉   需要   bsp   get   方法   值类型   静态   定义   

原文地址:http://www.cnblogs.com/vic-architect/p/7617317.html

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