单例模式(Singleton)

版权声明:未经允许,随意转载,请附上本文链接谢谢(づ ̄3 ̄)づ╭❤~
http://blog.csdn.net/xiaoduan_/article/details/79327794

单例模式(Singleton)

  1. 目的
    使得类的一个对象成为该类中唯一的对象

  2. 定义
    一个类有且仅有一个实例,并且自动实例化向整个系统提供

  3. 要点

    1. 某个智能有一个实例
    2. 必须直径创建实例
    3. 必须自行向整个系统提供这个实例
  4. 实现
    1. 只提供私有的构造方法
    2. 含有一个该类的静态私有对象
    3. 提供一个静态的公有方法用于创建,获取静态私有对象
  5. 分类
    1. 饿汉式
package com.imooc.singleton;

//饿汉式:创建对象实例的时候直接初始化  空间换时间
public class SingletonOne {
    //1、创建类中私有构造
    private SingletonOne(){

    }

    //2、创建该类型的私有静态实例
    private static SingletonOne instance=new SingletonOne();

    //3、创建公有静态方法返回静态实例对象
    public static SingletonOne getInstance(){
        return instance;
    }
}

2.懒汉式

package com.imooc.singleton;
//懒汉式:类内实例对象创建时并不直接初始化,直到第一次调用get方法时,才完成初始化操作
//时间换空间
public class SingletonTwo {
    //1、创建私有构造方法
    private SingletonTwo(){

    }

    //2、创建静态的该类实例对象
    private static SingletonTwo instance=null;

    //3、创建开放的静态方法提供实例对象
    public static SingletonTwo getInstance(){
        if(instance==null)
            instance=new SingletonTwo();

        return instance;
    }
}
  1. 饿汉式和懒汉式对比
    这里写图片描述

  2. 单例模式的优点

    1. 在内存中只有一个对象,节省内存空间
    2. 避免频繁的创建销毁对象,提高性能
    3. 避免对共享资源的多重占用
  3. 单例模式的缺点
    1. 扩张比较困难
    2. 如果实例化对象长期不利用,系统将默认认为垃圾进行回收,造成对象状态丢失
  4. 适用场景
    1. 创建对象时占用资源过多,但同时有需要用到该类对象
    2. 对系统内资源要求统一读写,如读配置信息
    3. 当多个实例存在可能引起程序逻辑错误,如号码生成器
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值