天天看点

java的知识点30——设计模式

java的知识点30——设计模式

 单例模式

核心作用:保证一个类只有一个实例,并且提供一个访问该实例的全局访问点

单例模式的优点:由于单例模式只生成一个实例,减少了系统性能开销,当一个对象的产生需要比较多的资源时,如读取配置、产生其他依赖对象时,则可以通过在应用启动时直接产生一个单例对象,然后永久驻留内存的方式来解决

常见的五种单例模式实现方式:• 饿汉式(线程安全,调用效率高。 但是,不能延时加载。)

                                                  • 懒汉式(线程安全,调用效率不高。 但是,可以延时加载。)

饿汉式

package cn.dym;
/**
 * 测试饿汉式单例模式
 * @author Administrator
 *
 */
public class SingletonDemo01 {
	//类初始化时,立即加载这个对象 (没有延时加载的优势) // 加载类时,天然的是线程安全
	private static SingletonDemo01 instance=new SingletonDemo01();  
	private SingletonDemo01() {
		
	}
	//方法没有同步,调用效率高
	public static SingletonDemo01 getInstance() {
		return instance;
	}
}
           

懒汉式:资源利用率高了。但是,每次调用getInstance()方法都要同步,并发效率较低

package cn.dym;
/**
 * 测试懒汉式单例模式
 * @author Administrator
 *
 */
public class SingletonDemo02 {
	//类初始化时,不初始化这个对象 (延时加载,真正用的时候在创建)
	private static SingletonDemo02 instance;  
	private SingletonDemo02() { //私有化构造器
		
	}
	//方法同步,调用效率低
	public static synchronized SingletonDemo02 getInstance() {
		if(instance==null) {
			instance=new SingletonDemo02();
		}
		return instance;
	}
}