纵有疾风起
人生不言弃

设计模式–单例模式


单例模式的意义

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

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

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

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

 

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

单例模式类图:

设计模式–单例模式插图

把构造函数私有化,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方法:频繁情况比较耗资源

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

双重检查加锁

  设计模式–单例模式插图(1)

 

文章转载于:https://www.cnblogs.com/lm970585581/p/9595499.html

原著是一个有趣的人,若有侵权,请通知删除

未经允许不得转载:起风网 » 设计模式–单例模式

分享到: 生成海报
avatar

评论 抢沙发

评论前必须登录!

立即登录   注册

切换注册

登录

忘记密码 ?

切换登录

注册

我们将发送一封验证邮件至你的邮箱, 请正确填写以完成账号注册和激活