关闭

java中的单例模式

115人阅读 评论(0) 收藏 举报
分类:

含义:保证一个类只有一个实例,并且提供一个访问该实例的全局访问点。

优点:减少系统开销

实现方式:1.饿汉式

                    2.懒汉式

                    3.双重检测锁式

                    4.静态内部类式

                    5.枚举单例

饿汉式:

package pattern;

public class SingletonDemo01 {
    private static SingletonDemo01 instance = new SingletonDemo01();
    private SingletonDemo01()
    {
        
    }
    public static SingletonDemo01 getinstance()
    {
        return instance;
    }
}


可以看出这种方法,instance实例的创建是在jvm初始化这个类时产生的,是没有延时加载的

想一想别的类中能否实例化这个对象,显然是不能的,因为它的构造器是私有的。

懒汉式:

package pattern;

public class SingletonDemo02 {
   private static SingletonDemo02 s;
   private SingletonDemo02()
   {
       
   }
   public static synchronized SingletonDemo02 getinstance()
   {
       if(s==null)
       {
        s= new SingletonDemo02();   
       }
       return s;
   }
}



这种懒汉式的方法虽然解决了延时加载的问题,但是会导致并发效率的降低,而且其实同步只需要第一次即可。

因为synchronized关键字的加入,使得不会同时有两个线程可以进入这个方法

双重检测锁式

package com.zw.mymaven;

public class SingletonDemo3 {
    private volatile static SingletonDemo3 instance;

    private SingletonDemo3() {
    };

    public static SingletonDemo3 getinstance() {
        if (instance == null) {
            synchronized (SingletonDemo3.class) {
                if (instance == null) {
                    instance = new SingletonDemo3();
                }
            }
        }
        return instance;
    }
}


静态内部类式

public class Singleton {    
    private static class LazyHolder {    
       private static final Singleton INSTANCE = new Singleton();    
    }    
    private Singleton (){}    
    public static final Singleton getInstance() {    
       return LazyHolder.INSTANCE;    
    }    
}  
枚举单例请自行百度

0
0
查看评论

java中实现单例模式的几种方式,简单易懂

一、饿汉式单例类 public class Singleton { private Singleton(){ } private static Singleton instance = new Singleton(); private st...
  • yuxin6866
  • yuxin6866
  • 2016-08-14 09:39
  • 2668

java中工厂模式和单例模式详解

如何将实例化具体类的代码从应用中抽离或者封装起来,使它们不会干扰应用的其他部分? 1:简单工厂模式:其作用是实例化对象而不需要客户了解这个对象属于那个具体的子类。 using System; using System.Collections; public class MyClass { &...
  • s2940086379
  • s2940086379
  • 2015-05-22 13:31
  • 1589

java 单例模式 最经典的例子

概念:   java中单例模式是一种常见的设计模式,单例模式分三种:懒汉式单例、饿汉式单例、登记式单例三种。   单例模式有一下特点:   1、单例类只能有一个实例。   2、单例类必须自己自己创建自己的唯一实例。   3、单例类必须给所有其他对象提供这一实例。   单例模式确保某个类只...
  • qq_29134495
  • qq_29134495
  • 2016-05-25 21:26
  • 591

JAVA设计模式之单例模式

概念:   java中单例模式是一种常见的设计模式,单例模式分三种:懒汉式单例、饿汉式单例、登记式单例三种。   单例模式有一下特点:   1、单例类只能有一个实例。   2、单例类必须自己自己创建自己的唯一实例。   3、单例类必须给所有其他对象提供这一实例。   单例模式确保某个类只有一个实例,...
  • jason0539
  • jason0539
  • 2014-04-16 06:51
  • 636673

java单例模式使用场景

主要优点: 1、提供了对唯一实例的受控访问。 2、由于在系统内存中只存在一个对象,因此可以节约系统资源,对于一些需要频繁创建和销毁的对象单例模式无疑可以提高系统的性能。 3、允许可变数目的实例。 单例模式实现步骤: 1.把构造方法私有化 2.惟一的一个实例,加上static属性 3.对外提供...
  • u014454120
  • u014454120
  • 2016-06-20 22:02
  • 1292

Java单例模式——并非看起来那么简单

Java中单例(Singleton)模式是一种广泛使用的设计模式。单例模式的主要作用是保证在Java程序中,某个类只有一个实例存在。一些管理器和控制器常被设计成单例模式。单例模式有很多好处,它能够避免实例对象的重复创建,不仅可以减少每次创建对象的时间开销,还可以节约内存空间;能够避免由于操作多个实例...
  • goodlixueyong
  • goodlixueyong
  • 2016-07-20 23:48
  • 31208

Java中用单例模式有什么好处

Java Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。 使用Singleton的好处还在于可以节省内存,因为它限制了实例的个数,有利于Java垃圾回收(garbage collection)。我们在浏览BBS、SNS网站的时候,常常会看到“当前在线人数...
  • huanbia
  • huanbia
  • 2017-05-12 10:05
  • 2436

JAVA的单例模式(用java写一个singleton的例子)。

代码如下: package test; public class SingleObject { // 创建 SingleObject 的一个对象 private static SingleObject instance = new SingleObject(); /...
  • suyu_yuan
  • suyu_yuan
  • 2016-08-18 12:58
  • 3318

Java单例模式的各种写法和最优写法推荐

话不多说,直接上代码: (1) //只适合单线程环境,懒汉模式 class Singleton{ private static Singleton Instance = null; public Singleton() { } pu...
  • chenbaige
  • chenbaige
  • 2016-05-24 18:55
  • 2894

JAVA单例模式的各种写法分析,最优为枚举

作用 单例模式(Singleton):保证一个类仅有一个实例,并提供一个访问它的全局访问点 适用场景 应用中某个实例对象需要频繁的被访问。 应用中每次启动只会存在一个实例。如数据库系统。 使用方式 懒汉式 public class Singl...
  • tianyazaiheruan
  • tianyazaiheruan
  • 2016-02-03 10:26
  • 4235
    个人资料
    • 访问:30388次
    • 积分:1167
    • 等级:
    • 排名:千里之外
    • 原创:87篇
    • 转载:17篇
    • 译文:0篇
    • 评论:1条
    最新评论