通过枚举enum实现单例】的更多相关文章

一.枚举 通过enum关键字来实现枚举,在枚举中需要注意的有: 1. 枚举中的属性必须放在最前面,一般使用大写字母表示 2. 枚举中可以和java类一样定义方法 3. 枚举中的构造方法必须是私有的 通过一个java类来模拟枚举的功能: package org.lkl.imitate_enum; public abstract class WeekDay { public static final WeekDay SUN = new WeekDay() { @Override public Wee…
通过enum关键字来实现枚举,在枚举中需要注意的有: 1. 枚举中的属性必须放在最前面,一般使用大写字母表示 2. 枚举中可以和java类一样定义方法 3. 枚举中的构造方法必须是私有的 enum Singleton implements Serializable { INSTANCE; private String name; public String getName() { return name; } public void setName(String name) { this.nam…
本文将简单介绍如何使用PowerMock和Mockito来mock1. 构造函数2. 静态函数3. 枚举实现的单例4. 选择参数值做为函数的返回值5. 在调用mock出来的方法中,改变方法参数的值 一点简要说明:Mockito其实已经可以满足大部分的需求,但是它的实现机制是使用cglib来动态创建接口的类的实例.但是这种实现方式不能用于构造函数和静态函数,因为那需要使用类的字节码(比如使用javassist). 所以我们才需要结合使用PowerMock. 1. mock构造函数, 如果有代码没有…
本文参考 本篇文章参考自<Effective Java>第三版第三条"Enforce the singleton property with a private constructor or an enum type" 原文的不足之处 原文给的示例代码比较简单,提供的是一种饿汉式的单例模式 // Singleton with public final field public class Elvis {     public static final Elvis INSTA…
双重检测实现 /** * 懒汉模式->双重同步锁单例模式 */ public class SingletonExample5 { private SingletonExample5() { } //volatile + 双重检测机制 -> 禁止指令重排序 private static volatile SingletonExample5 instance = null; /** * synchronized导致性能开销增加 */ private static SingletonExample5…
1.单例设计模式核心作用: 保证一个类只有一个实例,并且提供了访问该实例的全局访问点 2.常见应用场景: window的任务管理器 项目中读取配置文件一般也是一个单例模式 数据库连接池的设计也是采用单例模式,因为数据库连接是一种数据库资源 操作系统的文件管理系统,也是单例模式,一个操作系统只能有一个文件系统 Application也是单例的应用(Servlet编程或者Android的Application类) 在Spring中,每个bean默认也是单例的,这样的有点儿事Spring容器可以管理…
枚举作为一个常规的语言概念,一直到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…
1.饿汉式 public class SingletonDemo { private static SingletonDemo s=new SingletonDemo(); private SingletonDemo() {} public static SingletonDemo getInstance() { return s; } } public class Test { public static void main(String[] args) { SingletonDemo s=S…
此前面试遇到了单例问题,本以为已经背的滚瓜烂熟,没想到被问单例如何避免被反射和序列化破坏,虽然后来还是等到了通知,但还是复习一下单例的实现方式,并学习防止反射和序列化破坏的手段. 基本实现方式 其他相关资料中,最多的能数出八种单例实现方式,而实际上其中有些实现并不具备实际意义,在文中出现也仅是为了指出存在的问题便于引出下文.本文仅介绍有实际意义的单例实现模式.为了缩减篇幅,先给出一个后续出现代码的模板的类图: classDiagram class Singleton{ -Logger log$…
什么是单例模式? 保证一个了类仅有一个实例,并提供一个访问它的全局访问点. 单例模式的应用场景? 网站的计数器,一般也是采用单例模式实现,否则难以同步: Web应用的配置对象的读取,一般也应用单例模式,这个是由于配置文件是共享的资源: 数据库连接池的设计一般也是采用单例模式,因为数据库连接是一种数据库资源: 多线程的线程池的设计一般也是采用单例模式,这是由于线程池要方便对池中的线程进行控制. 单例的优缺点? 优点: 提供了对唯一实例的受控访问: 由于在系统内存中只存在一个对象,因此可以 节约系统…