如何写一个便捷的单例形式 (如何写一个便利店名字)

如何写一个便捷的单例形式 (如何写一个便利店名字)

本文目录导航:

如何写一个便捷的单例形式?

便捷的单例形式如下

[java]view plaincopyprint?

public class Singleton{

private static Singleton unique Instance=null;

private Singleton(){

//Exists only to defeat instantiation.

public static Singleton getInstance(){

if(unique Instance==null){

unique Instance=new Singleton();

return unique Instance;

//Other methods...

单例形式确保某个类只要一个实例,而且自行实例化并向整个系统提供这个实例。

在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。

这些运行都或多或少具备资源治理器的配置。

每台计算机可以有若干个打印机,但只能有一个Printer Spooler,以防止两个打印作业同时输入到打印机中。

每台计算机可以有若干通讯端口,系统应当集中治理这些通讯端口,以防止一个通讯端口同时被两个恳求同时调用。

总之,选用单例形式就是为了防止不分歧形态,防止政出多头。

裁减资料

一、单例形式有以下特点:

1、单例类只能有一个实例。

2、单例类必定自己创立自己的独一实例。

3、单例类必定给一切其余对象提供这一实例。

二、单例形式分三种:懒汉式单例、饿汉式单例、注销式单例三种。

1.饿汉式单例类

[java]view plaincopyprint?

//饿汉式单例类.在类初始化时,曾经自行实例化

public class Singleton1{

//私有的自动结构子

private Singleton1(){}

//曾经自行实例化

private static final Singleton1 single=new Singleton1();

//静态工厂方法

public static Singleton1 getInstance(){

return single;

2.懒汉式单例类

[java]view plaincopyprint?

//懒汉式单例类.在第一次性调用的时刻实例化

public class Singleton2{

//私有的自动结构子

private Singleton2(){}

//留意,这里没有final

private static Singleton2 single=null;

//静态工厂方法

public synchronized static Singleton2 getInstance(){

if(single==null){

single=new Singleton2();

return single;

3.注销式单例类

[java]view plaincopyprint?

//注销式单例类.

//相似Spring外面的方法,将类名注册,下次从外面间接失掉。

public class Singleton3{

private static Map<String,Singleton3>map=new HashMap<String,Singleton3>();

Singleton3 single=new Singleton3();

(()(),single);

//包全的自动结构子

protected Singleton3(){}

//静态工厂方法,返还此类独一的实例

public static Singleton3 getInstance(Stringname){

if(name==null){

(name==null+--->name=+name);

if((name)==null){

(name,(Singleton3)(name)());

}catch(InstantiationExceptione){

}catch(IllegalAccessExceptione){

}catch(ClassNotFoundExceptione){

//一个表示性的商业方法

public String about(){

returnHello,IamRegSingleton.;

public static void main(String[]args){

Singleton3 single3=(null);

参考资料:网络百科——java单例形式

如何在Java中成功单例形式?

单例形式大抵有五种写法,区分为懒汉,恶汉,静态外部类,枚举和双重校验锁。

1、懒汉写法,罕用写法

如何在java中成功singleton形式

单例形式是设计形式中的一种,重要目标是确保一个类只要一个实例,并提供一个全局访问点。

在Java中,成功单例形式的方法有五种:懒汉式、饿汉式、静态外部类、枚举和双重审核锁定。

懒汉式是经常使用最宽泛的一种成功形式。

它经过在类外部定义一个静态私有变量,并在类的外部方法中启动实例的初始化。

现在次调用getInstance方法时,会创立实例并前往。

懒汉式的成功如下:class LazySingleton { private static LazySingleton singleton; private LazySingleton() {} public static LazySingleton getInstance() { if (singleton == null) { singleton = new LazySingleton(); } return singleton; }}饿汉式则是在类加载时即创立实例,这种形式保障了线程安保,然而或者形成资源糜费,由于类加载时实例就曾经被创立了。

饿汉式的成功如下:class HungrySingleton { private static HungrySingleton singleton = new HungrySingleton(); private HungrySingleton() {} public static HungrySingleton getInstance() { return singleton; }}静态外部类的成功则是在第一次性经常使用时才加载外部类,从而成功提前加载。

这种形式既能保障线程安保,又不会在类加载时就创立实例。

静态外部类的成功如下:class InternalSingleton { private static class SingletonHolder { private final static InternalSingleton INSTANCE = new InternalSingleton(); } private InternalSingleton() {} public static InternalSingleton getInstance() { return ; }}枚举成功则经过枚举类型来保障明例的独一性,并且可以防止反序列化从新创立新的对象。

枚举成功如下:enum EnumSingleton { INSTANCE; public void doSomeThing() { // do something }}最后一种是双重审核锁定,只管在某些状况下可以提高性能,但在Java的以后内存模型中,这种形式是有效的。

双重审核锁定的成功如下:class LockSingleton { private volatile static LockSingleton singleton; private LockSingleton() {} public static LockSingleton getInstance() { if (singleton == null) { synchronized () { if (singleton == null) { singleton = new LockSingleton(); } } } return singleton; }}

你可能想看:
« 上一篇
下一篇 »

相关推荐

java中什么是冒泡,冒泡算法

2026年09月06日

27阅读

java中冒号,java双冒号

2026年09月06日

26阅读

java中的->,java中的是什么意思

2026年09月06日

24阅读

java中的super用法,Java中super的说明

2026年09月06日

28阅读

java中反射的应用,java中反射的应用场景

2026年09月06日

25阅读

java中开关的定义,Java关键字有哪些

2026年09月06日

26阅读