单例
http://www.iteye.com/topic/537563
3、单例模式有以下特点:
- 单例类只能有一个实例;
- 单例类必须自己创建自己的唯一的实例;
- 单例类必须给所有其他对象提供这一实例;
- 私有构造方法,避免外部创建实例;
- 私有静态实例;
- 静态工厂方法,返回此单例类唯一的实例。
—————— 私有静态实例——java 语言机制的static保障了内存(具体来说是方法内存区)中只有一个引用。。! 这个非常关键!!!
Rust
单例的作用?
某个创建很耗资源、时间的类,
整个项目运行中只能有一个实例存在的类
同时应用场景有单线程、多线程
如果是多线程,还要注意其线程安全的问题。
饿汉式的实现方式虽然貌似开销比较大,但是不会出现线程安全的问题,也是解决线程安全的单例实现的有效方式。 —— 使用static关键字修饰的变量只有在第一次使用的时候才会被初始化,而且一个类里面static的成员变量只会有一份,这样就保证了无论多少个线程同时访问,所拿到的Resource对象都是同一个
如果是懒汉式模式—— 则需要考虑线程安全,加synchronized 或其他。。
总结:
单线程的单例模式很简单,注意那么几个点即可,一般谁都会写。
多线程情况下,相对单线程要复杂很多,就要紧紧的盯住那个getInstance的静态方法了!