设计模式七:单例模式

 单例模式:

      保证一个类仅有一个实例,并提供一个访问它的全局访问点。

  1. 懒汉式单例

package com.China.singleton.example1;

/**
 * 懒汉式单例
 */
public class Singleton {
   
    // 定义一个变量,存储创建好的类实例
	private static Singleton uniqueInstance = null;
	
    // 私有化构造方法
	private Singleton(){
		
	}
	
    // 为客户端提供类实例
	public static synchronized Singleton getInstance(){
		
		if(uniqueInstance == null){
			uniqueInstance = new Singleton();
		}
		return uniqueInstance;
	}
	
	public void singletonOperation(){
		// 功能处理
	}
	
	/**
	 * 单例可以拥有自己的属性
	 */
	private String singletonData;
	
	/**
	 * 让外部通过这些方法来访问属性的值
	 */
	public String getSingletonData(){
		return singletonData;
	}
}

 2. 饿汉式单例

package com.China.singleton.example2;

/**
 * 饿汉式单例
 */
public class Singleton {
	// 直接创建类实例,只会创建一次
	private static Singleton uniqueInstance = new Singleton();
	
	private Singleton(){
		
	}
	
	public static  Singleton getInstance(){
		return uniqueInstance;
	}
	
	public void singletonOperation(){
		// 功能处理
	}
	
	/**
	 * 单例可以拥有自己的属性
	 */
	private String singletonData;
	
	/**
	 * 让外部通过这些方法来访问属性的值
	 */
	public String getSingletonData(){
		return singletonData;
	}
}

 如何获取缓存基本思路

package com.China.singleton.example5;

import java.util.HashMap;
import java.util.Map;

public class JavaCache {
	
	/**
	 * 缓存数据的容器
	 */
	private Map<String, Object> map = new HashMap<String, Object>();
	
	public Object getValue(String key){
		// 先从缓存中取值
		Object obj = map.get(key);
		
		// 判断缓存里面是否有值
		if(null == obj){
			obj = key+",value";
			map.put(key, obj);
		}	
		return obj;
	}
	
	// 1.定义一个存放缓存数据的容器
	
	// 2.  从缓存中获取数据的做法
	// 2.1  先从缓存里面取值
	// 2.2  判断缓存里面是否有值
	// 2.3  如果有值,就直接使用这个值
	// 2.4  如果没有,那么就去获取相应的数据,或者是创建相应的对象. 并且要把获取的数据放到缓存中
}

猜你喜欢

转载自blog.csdn.net/m0_37564426/article/details/90575196