Java学习笔记七(单例模式)

单例模式:

    无论创建多少个对象,实质都是同一个对象。

   (1) 目的: 使类的一个对象成为该类系统中的唯一实例

   (2) 定义: 一个类有且只有一个实例,并且自行实例化向整个系统提供

   (3) 要点: 一个类只能有一个实例

                   必须子集创建实例

                   必须自行向整个系统提供这个实例 

 (4) 实现方法: 只提供私有的构造方法

                           含有一个该类的静态私有对象

                           提供一个静态的共有方法用于创建、获取静态私有对象

   (5) 分类: 饿汉式  懒汉式


// 饿汉式 --> 对象创建中实例化

public class Earth{
       //1、 私有构造方法
        private Earth(){}
       //2、 自行实例化
        private static Earth earth = new Earth();
       //3、 提供公共方法
        public static Earth getInstance(){  return earth;}
}
public class SingletonTest{

      public static void main(String args[]){

               Earth e1 = Earth.getInstance();
               Earth e2 = Earth.getInstance();
               System.out.println( e1 == e2 );          //true
               System.out.println( e1.equals(e2));   //true
       }
}

//懒汉式 --> 静态公有方法中实例化

public class Emperor{

      private Emperor(){}
      private static Emperor e = null;
      public static Emperor getInstance(){
            if( em == null)
               e = new Emperor();
            return e;}
}


饿汉式与懒汉式的区别:

     饿汉式 --> 立即获得 以空间换时间  注重速度

     懒汉式 --> 延迟获得 以时间换空间 注重效率

   (6) 优点:  内存只有一个对象 节省内存空间

                    避免频繁的创建、销毁对象 提高性能

                    对共享资源的合理利用

    (7) 缺点: 扩展比较困难 长期不用(60s) 系统自动垃圾回收 造成对象丢失


最简单的单例实现:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值