`
aqxyjay
  • 浏览: 4082 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

EJ.03 用私有构造器或者枚举类型强化Singleton属性

    博客分类:
  • EJ
阅读更多

Singleton,指仅被实例化一次的类。

 

方法一:
公有静态final域,私有构造方法,可以通过反射进行攻击。
// Singleton with public final field
public class Elvis {
    public static final Elvis INSTANCE = new Elvis();
    private Elvis() { ... }
    
    public void leaveTheBuilding() { ... }
}
方法二:
静态工厂方法,较灵活,易被修改,反序列化时会创建新实例,需注意。
// Singleton with static factory
public class Elvis {
    private static final Elvis INSTANCE = new Elvis();
    private Elvis() { ... }
    public static Elvis getInstance() { return INSTANCE }
    
    public void leaveTheBuilding() { ... }
}
方法三:
单元素的枚举类型,绝对防止多次实例化,最佳方法。
// Enum singleton - the preferred approach
public enum Elvis {
    INSTANCE;
    
    public void leaveTheBuilding() { ... }
}
 
分享到:
评论

相关推荐

    TheThridJE~EJ.zip

    TheThridJE~EJ.zipTheThridJE~EJ.zipTheThridJE~EJ.zipTheThridJE~EJ.zipTheThridJE~EJ.zipTheThridJE~EJ.zipTheThridJE~EJ.zipTheThridJE~EJ.zipTheThridJE~EJ.zipTheThridJE~EJ.zipTheThridJE~EJ.zip

    Eijiro V86 JE~EJ.zip.001Eijiro V86 JE~EJ.zip.001

    Eijiro V86 JE~EJ.zip.001Eijiro V86 JE~EJ.zip.001Eijiro V86 JE~EJ.zip.001Eijiro V86 JE~EJ.zip.001Eijiro V86 JE~EJ.zip.001

    Eijiro V86 JE~EJ.zip.006

    Eijiro V86 JE~EJ.zip.006Eijiro V86 JE~EJ.zip.006Eijiro V86 JE~EJ.zip.006

    Eijiro V86 JE~EJ.zip.005Eijiro V86 JE~EJ.zip.005

    Eijiro V86 JE~EJ.zip.005Eijiro V86 JE~EJ.zip.005Eijiro V86 JE~EJ.zip.005Eijiro V86 JE~EJ.zip.005

    Eijiro V86 JE~EJ.zip.002Eijiro V86 JE~EJ.zip.002

    Eijiro V86 JE~EJ.zip.002Eijiro V86 JE~EJ.zip.002Eijiro V86 JE~EJ.zip.002

    Eijiro V86 JE~EJ.zip.004Eijiro V86 JE~EJ.zip.004

    Eijiro V86 JE~EJ.zip.004Eijiro V86 JE~EJ.zip.004

    Eijiro V86 JE~EJ.zipEijiro V86 JE~EJ.zip

    Eijiro V86 JE~EJ.zipEijiro V86 JE~EJ.zip

    ej.rar_c/C++

    标题中的"ej.rar_c/C++"表明这是一个与C++编程语言相关的压缩文件,而"ej.c"可能是包含C语言代码的源文件。描述提到的是一个能在DOS环境下操作光驱的C程序,这意味着我们将探讨如何在DOS操作系统下通过C语言控制硬件...

    Aspnet-ej2-aspmvc-ej1compatibility.zip

    Aspnet-ej2-aspmvc-ej1compatibility.zip,此演示旨在避免在asp.net mvcsyncfusion essential js 1和essential js 2 asp.net mvc兼容性中出现essential js 1和essential js 2兼容性问题。,asp.net是一个开源的web框架...

    EJ.Technologies.Perfino.3.2.1.x64

    随后用户便可使用命令行导出工具或者蚂蚁任务导出工具,在JProfiler GUI或导出视图设置中打开这些快照。 快照比较 在JProfiler中,用户可以将当前的所有设置数据保存到快照中。JProfiler提供了丰富的比较功能以...

    现代编程语言- Kotlin 之美 - 当下最火的编程语言欣赏.pdf

    #### EJ 第3条:用私有构造器或枚举类型强化Singleton属性 单例模式是一种常用的软件设计模式,旨在确保一个类只有一个实例,并提供一个全局访问点。Kotlin通过`object`关键字进一步简化了单例模式的实现,使得创建...

    ej4B.rar_Time

    【ej4B.rar_Time】是一个关于使用时间中断的示波器程序的压缩包,其中包含三个文件:ej4B.c、ej4B.h和ej4B.uir。这个项目主要探讨了在嵌入式系统或微控制器编程中如何利用时间中断来实现示波器功能,这对于电子...

    11 EJ1820使用手册.pdf

    EJ1820系列远程IO模块支持多种功能,包括数字量输入输出、模拟量输入输出以及特殊功能如脉冲输入输出和温度检测等。该系列支持的现场总线类型包括Profibus-DP、DeviceNet、CANopen等。 EJ1820远程IO模块将分布的IO...

    Matlab_based_DIC_code___Version_1___130814_EJ.zip_DIC speckle pa

    Digital Image Correlation (DIC) is an optical, non-contact method to measure full-field displacements and strains. The only requirement is that the test specimen has a random speckle pattern on its ...

    EJ511_Datasheet_rev0.97.pdf

    【EJ511 USB3.1 Gen1 视频捕获集成电路】 EJ511是一款专为USB3.1 Gen1视频捕捉设计的集成电路,由Etron Technology, Inc.开发。USB3.1 Gen1是USB 3.0规范的一部分,提供最高5Gbps的数据传输速率,比USB2.0的480Mbps...

    EJ.COM

    在DOS下弹出CD-ROM的小程序,需要先加载MSCDEX.

    ej_2000.zip

    模型的使用者可以在STK中导入这些模型,然后模拟其在不同环境条件下的飞行性能,进行轨迹分析、通信链路分析或者进行光学观测模拟。由于这些模型被证实适用于STK8.0到STK11版本,说明它们具有较好的兼容性,用户无需...

Global site tag (gtag.js) - Google Analytics