如何对Java单例形式启动mock (如何对java源码进行加密)

如何对Java单例形式启动mock (如何对java源码进行加密)

本文目录导航:

如何对Java单例形式启动mock

JAVA单例形式的几种成功方法饿汉式单例类;//饿汉式单例类.在类初始化时,曾经自行实例化publicclassSingleton1{//私有的自动结构子privateSingleton1(){}//曾经自行实例化privatestaticfinalSingleton1single=newSingleton1();//静态工厂方法publicstaticSingleton1getInstance(){returnsingle;}}2.懒汉式单例类;//懒汉式单例类.在第一次性调用的时刻实例化publicclassSingleton2{//私有的自动结构子privateSingleton2(){}//留意,这里没有finalprivatestaticSingleton2single;//只实例化一次性static{single=newSingleton2();}//静态工厂方法publicsynchronizedstaticSingleton2getInstance(){if(single==null){single=newSingleton2();}returnsingle;}}在下面给出懒汉式单例类成功里对静态工厂方法经常使用了同步化,以解决多线程环境。

有些设计师在这里倡导经常使用所谓的双重审核成例.肯定指出的是,双重审核成例无法以在Java言语中经常使用。

不十分相熟的读者,可以看看前面给出的小节。

雷同,由于结构子是私有的,因此,此类不能被承袭。

饿汉式单例类在自己被加载时就将自己实例化。

即使加载器是静态的,在饿汉式单例类被加载时仍会将自己实例化。

单从资源应用效率角度来讲,这个比懒汉式单例类稍差些。

从速度和反响期间角度来讲,则比懒汉式单例类稍好些。

但是,懒汉式单例类在实例化时,肯定解决好在多个线程同时初次援用此类时的访问限度疑问,特意是当单例类作为资源管理器,在实例化时肯定触及资源初始化,而资源初始化很有或者消耗期间。

这象征着产生多线程同时初次援用此类的机率变得较大。

饿汉式单例类可以在Java言语内成功,但不易在C++内成功,由于静态初始化在C++里没有固定的顺序,因此静态的m_instance变量的初始化与类的加载顺序没有保障,或者会出疑问。

这就是为什么GoF在提出单例类的概念时,举的例子是懒汉式的。

他们的书影响之大,致使Java言语中单例类的例子也大多是懒汉式的。

实践上,本书以为饿汉式单例类更合乎Java言语自身的特点。

3.注销式单例类;;;//注销式单例类.//相似Spring外面的方法,将类名注册,下次从外面间接失掉。

publicclassSingleton3{privatestaticMapmap=newHashMap();static{Singleton3single=newSingleton3();(()(),single);}//包全的自动结构子protectedSingleton3(){}//静态工厂方法,返还此类独一的实例publicstaticSingleton3getInstance(Stringname){if(name==null){name=();(name==null+--->name=+name);}if((name)==null){try{(name,(Singleton3)(name)());}catch(InstantiationExceptione){();}catch(IllegalAccessExceptione){();}catch(ClassNotFoundExceptione){();}}(name);}//一个表示性的商业方法publicStringabout(){returnHello,IamRegSingleton.;}publicstaticvoidmain(String[]args){Singleton3single3=(null);(());}}

如何在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中成功单例形式?

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

1、懒汉写法,罕用写法

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

相关推荐

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日

25阅读