单例模式

第一次写,有不足之处可以点出来,互相交流~~
什么是单例模式?
单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例。
单例模式分类:懒汉式单例、饿汉式单例
单例模式的特点:
1、单例类之呢个有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。

①饿汉式单例
//饿汉式单例类,在类初始化时,已经自行实例化

public class Singleton {
	private Singleton() {
	}
	private static final Singleton single = new Singleton();
	// 静态工厂方法
	public static Singleton getInstance() {
		return single;
	}
}

public class test {
	public static void main(String[] args) {
		Singleton sl1 = Singleton.getInstance();
		Singleton sl2 = Singleton.getInstance();
		System.out.println((sl1 == sl1) + "-");
	}
}

②懒汉式单例
//懒汉式单例类.在第一次调用的时候实例化自己

 public class Singleton1 {
	private Singleton1() {
	}
	private static Singleton1 single=null;
	// 静态工厂方法
	public static Singleton1 getInstance() {
		if(single == null) {
			single = new Singleton1();
		}
		return single;
	}
}

public class test {
	public static void main(String[] args) {
		Singleton sl1 = Singleton.getInstance();
		Singleton sl2 = Singleton.getInstance();
		System.out.println((sl1 == sl1) + "-");
	}
}

饿汉式与懒汉式的区别:
饿汉式就是类一旦加载,就把单列初始化完成,保证getInstance的时候,单例就已经存在了。
懒汉式就是当调用genInstance的时候,才会去初始化这个单例.
其实还可以用以下两中方式区分:
1、线程安全方面:
饿汉式天生就是线程安全的,可以直接 用于多线程而不出现问题,而懒汉式本身就是非线程安全的。
2、资源加载和性能
饿汉式在类创建的同时就实例化一个静态对象出来,不管你调不调用,都会占据内存了,但是第一调用时,也会比懒汉式快,因为资源被初始化了
懒汉式,其实也恰恰和饿汉式相反,会在第一次调用实例对象出来,要初始化,性能行会延迟。

posted @ 2018-11-15 23:44  Libbo-yu  阅读(208)  评论(0编辑  收藏  举报