单例模式
所谓的单例设计指的是一个类只允许产生一个实例化对象。
最好理解的一种设计模式,分为懒汉式和饿汉式。
饿汉式
构造方法私有化,外部无法产生新的实例化对象,只能通过static方法取得实例化对象
饿汉式,从名字上也很好理解,就是“比较勤”,实例在初始化的时候就已经建好了,不管你有没有用到,都先建好了再说。好处是没有线程安全的问题,坏处是浪费内存空间。
class Singleton{
/**
* 在类的内部可以访问私有结构,所以可以在类的内部产生实例化对象
*/
private static Singleton instance = new Singleton(); //不管有没有用到,先建好再说
private Singleton(){} //声明构造
public static Singleton getInstance(){ //返回对象实例
return instance;
}
public void print(){
System.out.println("Hello Singleton...");
}
}
懒汉式
当第一次去使用Singleton对象的时候才会为其产生实例化对象的操作
懒汉式,顾名思义就是实例在用到的时候才去创建,“比较懒”,用的时候才去检查有没有实例,如果有则返回,没有则新建。有线程安全和线程不安全两种写法,区别就是synchronized关键字。
class Singleton{
/**
*声明变量
*/
private static Singleton instance; //先声明
private Singleton(){}; //私有构造方法
public static Singleton getInstance(){
if(instance == null){
instance = new instance();
}
return instance;
}
}