设计模式七:单例模式

    xiaoxiao2024-12-19  15

     单例模式:

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

          采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)

     单例模式的八种方式

       1).饿汉式(静态常量)

       2).饿汉式(静态代码块)

       3).懒汉式(线程不安全)

       4).懒汉式(线程安全,同步方法)

       5).懒汉式(线程安全,同步代码块)

       6).双重检查

       7).静态内部类

       8).枚举 

      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 如果没有,那么就去获取相应的数据,或者是创建相应的对象. 并且要把获取的数据放到缓存中 }

     

    最新回复(0)