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

设计模式--单例模式

时间:2018-09-06 02:53:19      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:类加载   ati   分享   问题   获取对象   syn   info   tin   频繁   

单例模式的意义

有些对象我们只需要一个:线程池、缓存、硬件设备等

如果多个实例会有造成冲突、结果的不一致性等问题

是否可以用静态变量方式来实现?

或者程序员之间协商个全局变量?

 

单例模式:确保一个类最多只有一个实例,并提供一个全局访问点 

单例模式类图:

技术分享图片

把构造函数私有化,getInstance中判断uniqueInstance是否已经实例化,若已经实例化直接返回,否则实例化后返回

代码演示:

package com.java.jikexueyuan.singleton;

public class Singleton {
    
    private static Singleton uniqeInstance=null;
    
    private Singleton(){
        
    };
    
    public static Singleton getInstance()
    {
        if(uniqeInstance==null)
        {
            uniqeInstance=new Singleton();
        }
        return uniqeInstance;
        
    }

}

单例模式的优化

多线程问题

  可能会出现创建多个实例的情况

 

优化:

  同步(synchronized)getInstance方法:频繁情况比较耗资源

  “急切”创建实例(饿汉式):在类加载时就完成了初始化,所以类加载较慢,但获取对象的速度快

双重检查加锁

  技术分享图片

 

设计模式--单例模式

标签:类加载   ati   分享   问题   获取对象   syn   info   tin   频繁   

原文地址:https://www.cnblogs.com/lm970585581/p/9595499.html

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