一、定义与特点
单例(Singleton):一个类只有一个实例,且该类能自行创建这个实例的一种模式
单例模式的特点
- 单例类只有一个实例对象
- 该单例对象必须由单例类自行创建
- 单例类对外提供一个访问该单例的全局访问点
二、结构与实现
单例模式的结构
- 单例类:包含一个实例且能自行创建这个实例的类
- 访问类:使用单例的类
单例模式的实现
- 懒汉式单例
当程序第一次访问单例模式实例时进行创建
缺点: 容易引起不同步问题,需要创建同步锁
public class LazySingleton
{
private static volatile LazySingleton instance = null;
private LazySingle(){}
public static synchronized LazySingleton getInstance()
{
if(instance == null)
{
instance = new LazySingleTon();
}
return instance;
}
}
- 饿汉式单例
在程序启动或单例模式类被加载时就已经被创建
public class HungrySingleton
{
private static final HungrySingleton instance = new HungrySingleton();
private HungrySingleton(){}
public static HungrySingleton getInstatnce()
{
return instance;
}
}
三、Golang实现单例模式
package singleton
import "sync"
type Singleton struct{}
var singleton *Singleton
var once sync.Once
func GetInstance() *Singleton {
once.Do(funct(){
singleton = &Singleton{}
})
}
网友评论