单件模式 Singleton Pattern

1.哪些地方能用到单件模式?【有些对象我们只需要一个】

线程池、缓存、对话框、处理偏好设置、注册表、日志、充当打印机和显卡的驱动程序的对象。。。

2.为什么不用Java静态变量?

java静态变量在编译的时候就创建了;而单件则在需要的时候随时使用singleton.getInstance()来创建实例【延迟实例化】。

3.定义

单件模式确保一个类只有一个实例,并提供一个全局的访问点。

在Java中实现单件模式,要有一个静态变量、一个私有构造器、一个静态方法【公有】

4.单件模式在遇到多线程时,要增加synchronized关键字到getInstance()方法中【同步】。

但同步后,性能就会降低,解决办法:

1.急切实例化【静态地初始化实例】 

2.双重锁

单件模式 Singleton Pattern