单例模式
单例模式:确保一个类只有一个实例,并提供一个全局访问点来访问这个唯一实例. (属于对象创建型模式)
3要点:1.某个类只能有一个实例;2.这个类必须自行创建这个实例;3.它必须自行向整个系统提供这个实例
实现思路:外部不能通过构造方法创建对象,所以就要求单例模式的构造方法要是private的. 只能由该类自己创造一个实例.
class Singleton{ private static Singleton instance=null;//静态的 //私有构造函数 private Singleton(){} //静态公有工厂方法,返回唯一实例 public static Singleton getInstance(){ if(instance==null) { instance=new Singleton(); } return instance; } }
单例模式还分为有"饿汉单例模式"和"懒汉单例模式".
饿汉单例模式
class Singleton{ private static Singleton instance=new Singleton();//静态的 //私有构造函数 private Singleton(){} //静态公有工厂方法,返回唯一实例 public static Singleton getInstance(){ return instance; }
懒汉单例模式
class LazySingleton
{
private static LazySingleton instance=null;
//辅助对象
private static readonly object syncRoot=new object();
private LazySingleton(){}
public static LazySingleton getInstance()
{
//第一重判断,判断实例是否存在
if(instance==null)
{
//给一下代码加锁,一次只能有一个线程访问
lock(syncRoot)
{
//第二重判断,如果实例不存在则创建实例
if(instance==null){
instance=new LazySingleton();
}
}
}
return instance;
}
}
饿汉模式:由于声明了静态变量实例,因此在类加载时就会实例化这个唯一的对象,不管用不用.占用内存;
懒汉模式:在类加载时不会被实例化,而是在第一次调用实例化方法的时候才实例化.

浙公网安备 33010602011771号