Java基础复习:单例模式
来源:互联网 发布:深圳奥萨制药 知乎 编辑:程序博客网 时间:2024/05/01 02:47
目的:采取一定的方法,保证整个应用中对某个类有且只有一个对象实例,所有指向该类型实例的应用都指向这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。
如果要让类在一个虚拟机中只能产生一个对象,首先必须将雷的构造方法的访问权限设置为private,这样,就不能用new操作符在类的外部产生类的对象了,但在类内部人可以产生该类的对象。
因为在类的外部开始还无法得到类的对象,只能调用该类的某个静态方法以返回类内部创建的对象,静态方法只能访问类中的静态成员变量,所以,指向类内部产生的该类对象的变量也必须定义成静态的。
懒汉式单例:
它的特点是运行时获得对象的速度比较慢,但加载类的时候比较快。它在整个应用的生命周期只有一部分时间在占用资源。
//懒汉式,线程不安全的class Singleton2{private static Singleton2 instance = null;public static Singleton2 getInstance(){if(instance == null){instance = new Singleton2();}return instance;}private Singleton2(){}}public class SingletonDemo {public static void main(String[] args) {Singleton2 s3 = Singleton2.getInstance();Singleton2 s4 = Singleton2.getInstance();System.out.println(s3 == s4);//true}}
饿汉式单例:(推荐使用)
它的特点是加载类的时候比较慢,但运行时获得对象的速度比较快。它从加载到应用结束会一直占用资源。
//饿汉式class Singleton{private static final Singleton instance;static{instance = new Singleton(); }public static Singleton getInstance(){return instance;}//把构造方法私有化,不允许外界再创建对象private Singleton(){}}public class SingletonDemo {public static void main(String[] args) {Singleton s1 = Singleton.getInstance();Singleton s2 = Singleton.getInstance();System.out.println(s1 == s2);//true}}
此外,还可以使用枚举来实现单例模式。
使用枚举来实现单例模式的好处是这样非常简洁,并且无偿地提供了序列化机制,绝对防止多次实例化,即使是在面对复杂的序列化或者反射攻击的时候。——《Effective Java》
public enum Singleton { INSTANCE;//唯一实例 public static Singleton getInstance(){ return INSTANCE; } public void show(){System.out.println("使用enum实现单例模式"); }}
- Java基础复习:单例模式
- Java基础复习之三:单例模式
- Java单例模式复习(-)
- Java单例模式复习(二)
- Java单例模式复习(三)
- Java复习之单例设计模式
- c\c++复习基础要点08--c++单例模式
- Java基础----单例模式
- java基础---单例模式
- Java基础-设计模式-单例模式
- Java语言实现的单例设计模式复习
- Java基础复习:适配器模式
- 设计模式复习--单例模式
- Java基础之单例模式
- java基础之单例模式
- java基础--单例设计模式
- Java编程算法基础--单例模式
- java基础——单例模式
- 致童年—遗忘的快乐
- hashmap hashtable 的区别
- linux 脚本判定文件和目录以及进程
- 面试时被问道,心里很清楚,但回答不好的问题----应用程序如何调用驱动程序
- JFreeChart绘制时序图示例
- Java基础复习:单例模式
- Android 两个activity之间“平推”的动画切换效果
- 玩转SSRS第四篇---在程序中使用报表
- C++ primer 学习(四)
- 我的创业路 (一)梦的开篇
- VC实现二维码(qrcode)编码源码
- 三星电子前CEO尹钟龙:何谓“超一流企业”
- 字符流和字节流
- 十件你生命中无能为力的事(看了你会放开很多)