java设计模式—单列模式
来源:互联网 发布:linux退出vim进入末行 编辑:程序博客网 时间:2024/04/29 11:22
- 这个不管怎样对初学者来说都是要会写的!知道是一回事,写出来是另一回事!
这里列举的5种方式:饿汉式;懒汉式;双重检验锁;静态内部类;枚举
当然还有static{ } 区域内的初始化的数据
访问final 字段时…
public class Test{ public static void main(String[] args) { Singleton single1 = Singleton.getInstance(); Singleton single2 = Singleton.getInstance(); System.our.println(single1 == single2 ) ---out: true }}class Singleton { //这种(饿汉式)适合--如果单列对象初始化快,占用内存小,可以在应用启动时加载并初始化; private static Singleton single = new Singleton(); private Singleton(){ } public static Singleton getInstance(){ return single; }}//当单列初始化操作比较耗时,或占用内存大,一般不会使用,而是使用下面一种class Singleton { //这种是(懒汉式)适合--按需延时加载单列 二者的区别在于(懒)是在将单例初始化操作延时到需要的时候才进行 //比如,单列用的擦数不多,单是提供的功能又复杂,加载和初始化操作要消耗大量资源 --使用方便! private static Singleton single = null; private Singleton(){ } public static Singleton getInstance(){ if(single == null ) { single = new Singleton(); } return single; }}//上面都适合单线程,在多线程的时候就需要同步锁了class Singleton { //这种是双重校验锁 private static Singleton single null; private Singleton(){ } public static Singleton getInstance(){ if(single == null ) {//在这里加锁,如果之前已经实例化了就不必在执行synchronized下面的代码,提高性能 synchronized(Singleton.class){ single = new Singleton(); } } return single; }}//还有就是静态内部类class Singleton { //这里是内部类,在装载该内部类时,才会得到单列对象 //只要应用不适用内部类JVM就不会去加载这个单列(这个现在还不太懂...) private static class InnerClass { public static Singleton single = new Singleton(); } private Singleton(){ } public static Singleton getInstance(){ return InnerClass.single;//得到单列对象 } public String doSomething(){ //do .... return "ssssss" ; }}//调用是时候直接{ String data = Singleton.getInstance().doSomething();}//还有最后一个就是枚举public enum Singleton{ //定义一个枚举元素,就是他自己的实例 instance; public void doSomething(){ //do.... }}//使用的时候{ Singleton single = Singleton.instance; single.doSomething();}
//根据stormzhang的微信公众号总结的 张哥公众号干货够喝一大壶!哦!微信号是 googledev
- 观看刘欣讲解Effective java 后添加的内容
- 单例的范围:只作用在一个jvm中!如果有2个jvm都调用了同一个单例对象,则会产生2个地址不同的该单例对象!!!
- 如果单例对象被序列化了Serializable,那么单例就失效了!解决方法:就是在单例中添加 private Object ReadResolve(return instance对象;)——当然一般情况下单例的类不需要序列化…..
- 单例会让单元测试百年的困难…
0 0
- java单列设计模式
- Java单列设计模式
- Java设计模式——单列模式
- java设计模式—单列模式
- java设计模式--单列模式
- java设计模式-单列模式
- java 设计模式-单列模式
- Java设计模式 单列模式
- java 中的单列设计模式
- java设计模式之单列
- 设计模式--单列模式
- 设计模式-单列模式
- 浅谈JAVA设计模式--单列模式
- 设计模式——单列设计模式
- 设计模式——单列模式 Singleton
- 设计模式学习—单列模式
- 黑马程序员——JAVA基础之单列设计模式
- Java回顾篇——单列的设计模式。
- permission is only granted to system apps,解决办法
- Apple Watch苹果手表数据备份与数据存储结构
- 关于程序媛
- 【脑筋急转弯】—— 在网格中移动
- flash 与字符串:首字母大写
- java设计模式—单列模式
- shell中的数学运算
- 1018. 锤子剪刀布 (20) PAT 乙级
- Arduino 学习笔记(二)
- Simple MVVM中利用JsonConvert 序列化Model实体类
- 柴俊理金:公投脱欧几成定局,金银强势原油走弱
- phonegap+ionic
- gnome tweak tool for ubuntu
- Web前端调试利器—FireBug使用方法推荐