单件模式 Singleton Pattern
1.哪些地方能用到单件模式?【有些对象我们只需要一个】
线程池、缓存、对话框、处理偏好设置、注册表、日志、充当打印机和显卡的驱动程序的对象。。。
2.为什么不用Java静态变量?
java静态变量在编译的时候就创建了;而单件则在需要的时候随时使用singleton.getInstance()来创建实例【延迟实例化】。
3.定义
单件模式确保一个类只有一个实例,并提供一个全局的访问点。
在Java中实现单件模式,要有一个静态变量、一个私有构造器、一个静态方法【公有】
4.单件模式在遇到多线程时,要增加synchronized关键字到getInstance()方法中【同步】。
但同步后,性能就会降低,解决办法:
1.急切实例化【静态地初始化实例】
2.双重锁