单例模式 事例操作 最喜欢枚举类型单例模式

JAVA中单例模式是一种常见的设计模式,单例模式分五种:懒汉,恶汉,双重校验锁,枚举和静态内部类五种。
  单例模式有一下特点:
  1、单例类只能有一个实例。
  2、单例类必须自己自己创建自己的唯一实例。
  3、单例类必须给所有其他对象提供这一实例。
  单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。这些应用都或多或少具有资源管理器的功能。每台计算机可以有若干个打印机,但只能有一个Printer Spooler,以避免两个打印作业同时输出到打印机中。每台计算机可以有若干通信端口,系统应当集中管理这些通信端口,以避免一个通信端口同时被两个请求同时调用。总之,选择单例模式就是为了避免不一致状态,避免政出多头。

下面看一下例子:有的例子是种类的变种:

package com.gd.singleton;
/**
 * 单例模式
 * @author zlm
 *
 */
public class SingletonOne {
public static void main(String[] args) {
//SingletonSix.class.newInstance();
 SingletonSix.INSTANCE.equals(SingletonSix.TEST);
 System.out.println(SingletonSix.INSTANCE.hashCode());
 System.out.println("----------------");
 System.out.println(SingletonSix.TEST.hashCode());
}
}
// 懒汉模式
class Singleton{
private static Singleton instance;
private Singleton(){
}
public static Singleton getInstance(){
    if(instance == null){
      instance =  new Singleton();
      }
      return instance;
}
}
class SingletonTwo{
private static SingletonTwo instance;
private SingletonTwo(){}
public static synchronized SingletonTwo getInstance(){
if(instance == null){
instance = new SingletonTwo();
}
return instance;
}
}
class SingletonThree{
private static SingletonThree instance = new SingletonThree();
private SingletonThree(){}
public static SingletonThree getInstance(){
return instance;
}
}
class SingletonFour{
private static SingletonFour instance = null;
static{
instance = new SingletonFour();
}
private SingletonFour(){}
public static SingletonFour getInstance(){
return instance;
}
}
class SingletonFive{
private static class SingletonHolder{
private static final SingletonFive INSTANCE = new SingletonFive();
}
private SingletonFive(){}
public static final SingletonFive getInstance(){
return SingletonHolder.INSTANCE;
}
}
enum SingletonSix{
INSTANCE,TEST;
public  void getSinglet(){
System.out.println("枚举实现单例模式!!!!!");
}
}
class SingletonSeven{
private volatile static SingletonSeven instance;
    private SingletonSeven(){}
    public static SingletonSeven getInstance(){
    if(instance == null){
    synchronized(SingletonSeven.class){
    if(instance == null){
    instance = new SingletonSeven();
    }
    }
    }
    return instance;
    }
}
//class SingletonEight{
//private static  SingletonEight instance;
//private SingletonEight(){}
//
//}
时间: 2024-11-03 03:27:20

单例模式 事例操作 最喜欢枚举类型单例模式的相关文章

Java枚举enum以及应用:枚举实现单例模式

枚举作为一个常规的语言概念,一直到Java5才诞生不得不说有点奇怪,以至于到现在为止很多程序员仍然更喜欢用static final的形式去命名常量而不使用,一般情况下,Java程序员用这种方式去实现枚举: class EnumByClass{ public static final int RED=0; public static final int GREEN=1; public static final int BLUE=2; } 这种方式实现的枚举也叫int枚举模式,尽管很常用,但是由in

枚举实现单例模式

package com.wz.thread.enums; import java.sql.Connection;import java.sql.DriverManager; /** * 使用枚举实现单例模式 * @author Administrator * */public class MyObject {    public enum MyEnumSingletion{        connectionFactory;        private Connection connectio

C#枚举类型的常用操作总结

枚举类型是定义了一组"符号名称/值"配对.枚举类型是强类型的.每个枚举类型都是从system.Enum派生,又从system.ValueType派生,而system.ValueType又从system.Object派生,所以枚举类型是指类型. 编译枚举类型时,C#编译器会把每个符号转换成类型的一个常量字段.C#编译器将枚举类型视为基元类型. 1.获取枚举列表:         /// <summary>         /// 获取枚举列表         /// <

深入理解Java枚举类型(enum)

[版权申明]未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) http://blog.csdn.net/javazejian/article/details/71333103 出自[zejian的博客] 关联文章: 理解Java位运算 深入理解Java类型信息(Class对象)与反射机制 本篇主要是深入对Java中枚举类型进行分析,主要内容如下: 理解枚举类型 枚举的定义 枚举实现原理 枚举的常见方法 Enum抽象类常见方法 编译器生成的Values方法与ValueOf方法 枚举与Clas

第三条 私有化构造器或者枚举类型强化Singleton属性

1.5版本之前,我们通常实现单例模式有两种方式: 两种方法前提都是私有化构造器,然后通过不同的方式获取对象. 第一种:通过公共的静态变量获取 public class Elivs{ // 私有化构造器 private Elivs(){} // 通过静态私有变量保存对象 public static final Elivs INSTANCE = new Elivs(); } 第二种:通过静态方法获取 public class Elivs{ // 私有化构造器 private Elivs(){} //

比你想象中还要强大的枚举类型

开发中枚举类型往往被用在可以一一列举的实例中,比如 enum Color{red,green,blue;}.但是可能你不会注意到它的更强大之处,比如如下问题看看你能作答吗 1.枚举类型可以有构造函数吗? 2.枚举类型可以实现接口.继承类吗? 3.枚举类型可以有static成员变量和方法吗?以及可否有实例变量和方法吗? 4.枚举类型可以被继承吗? ..........等(打开eclipse一试便知的知识) 其实enum类型就是一个特殊的java类,它几乎具有一个java类所具有的大部分功能.它更类

【转】Android中的内存管理--不错不错,避免使用枚举类型

原文网址:http://android-performance.com/android/2014/02/17/android-manage-memory.html 本文内容翻译自:http://developer.android.com/training/articles/memory.html 随机存取存储器(RAM)再任何软件开发环境中都是宝贵的资源,但是在移动操作系统中,内存资源更为宝贵,使用时也会收到限制.虽然Android的Dalvik虚拟机有运行时的垃圾回收机制,但是这不意味着你的A

用私有构造器或者枚举类型强化singleton属性——Effective Java 读书笔记

/** * 实现singleton的第二种方法,共有成员是个静态工厂方法. * (第一种方法中公有静态成员是个final域,即直接使用private static final Singleton INSTANCE = new Singleton();) * @author 刘向峰 * */ public class Singleton { private static final Singleton INSTANCE = new Singleton(); /** * 享有特权的客户端可以借助 j

枚举类型Enum的含义分析

枚举类型是一种基本数据类型而不是构造数据类型,从jdk1.5才有的新类型,一般用来做全局常量. 特性: 1.它不能有public的构造函数,这样做可以保证客户代码没有办法新建一个enum的实例,可用来写单例模式. 2.所有枚举值都是public , static , final的.注意这一点只是针对于枚举值,我们可以和在普通类里面定义 变量一样定义其它任何类型的非枚举变量,这些变量可以用任何你想用的修饰符. 3.Enum覆载了了toString方法,因此我们如果调用Color.Blue.toSt