设计模式1——单例

单例

http://www.iteye.com/topic/537563

3、单例模式有以下特点: 

  • 单例类只能有一个实例; 
  • 单例类必须自己创建自己的唯一的实例; 
  • 单例类必须给所有其他对象提供这一实例;
  • 私有构造方法,避免外部创建实例;
  • 私有静态实例;
  • 静态工厂方法,返回此单例类唯一的实例。

—————— 私有静态实例——java 语言机制的static保障了内存(具体来说是方法内存区)中只有一个引用。。! 这个非常关键!!!

Rust

单例的作用?

某个创建很耗资源、时间的类,

整个项目运行中只能有一个实例存在的类

同时应用场景有单线程、多线程

如果是多线程,还要注意其线程安全的问题。

饿汉式的实现方式虽然貌似开销比较大,但是不会出现线程安全的问题,也是解决线程安全的单例实现的有效方式。 —— 使用static关键字修饰的变量只有在第一次使用的时候才会被初始化,而且一个类里面static的成员变量只会有一份,这样就保证了无论多少个线程同时访问,所拿到的Resource对象都是同一个

如果是懒汉式模式—— 则需要考虑线程安全,加synchronized 或其他。。

总结:

单线程的单例模式很简单,注意那么几个点即可,一般谁都会写。

多线程情况下,相对单线程要复杂很多,就要紧紧的盯住那个getInstance的静态方法了!

原文地址:https://www.cnblogs.com/FlyAway2013/p/3824774.html