设计模式分类:
- 创建型
- 结构型
- 行为型
1.1单例模式
//创建一个 Singleton 类
private class SingleObject
{
//创建一个唯一的实例对象
private static SingleObject instance = new SingleObject();
//让构造函数为 private,这样该类就不会被实例化
private SingleObject(){}
//获取唯一可用的对象
public static SingleObject getInstance()
{
return instance;
}
}
单例模式的几种实现方式:
//=======1.懒汉式,线程不安全======
private class Singleton
{
//声明一个唯一的实例对象
private static Singleton instance;
private Singleton(){}
//获取唯一可用的对象
public static Singleton getInstance()
{
//第一次调用才初始化,避免内存浪费。
if(instance==null)
instance = new Singleton();
return instance;
}
}
//=======2.懒汉式,线程安全=======
private class Singleton
{
//声明一个唯一的实例对象
private static Singleton instance;
private Singleton(){}
//优点:第一次调用才初始化,避免内存浪费。
//缺点:必须加锁 synchronized 才能保证单例,但加锁会影响效率。
public static synchronized Singleton getInstance()
{
//用到时才进行对象的创建
if(instance==null)
instance = new Singleton();
return instance;
}
}
//=======3.饿汉式,线程安全======= *****
public class Singleton
{
private static Singleton instance = new Singleton();
private Singleton (){}
//优点:没有加锁,执行效率会提高。
//缺点:类加载时就初始化,浪费内存。
public static Singleton getInstance()
{
return instance;
}
}