使用单例模式自定义缓存

1. 两种实现

    ① 直接在单例类里创建一个map,key是 类名方法名参数列表和实参组合,value为值

    ②在单例类里创建两个map(嵌套map),外层map的key 是service层全限定名,内层key 是方法名形参,value为值

代码实现如下:

/**
 * 单例模式结合 hashTable 作缓存 测试
 */
@Controller
public class SingleCacheTest {

    private static Map<String,Object>  cacheManager = null;
    private static Map<String,Map<String,Object>>  cacheManagers = null;

    private static SingleCacheTest instance = new SingleCacheTest();
    private SingleCacheTest(){
        cacheManager = new HashMap<String,Object>();
        cacheManagers = new HashMap<String,Map<String,Object>>();
    }
    public static SingleCacheTest getInstance(){
        return instance;
    }


    public static Map<String,Object> getCacheManager(){
        return cacheManager;
    }

    public static Map<String,Map<String,Object>> getCacheManagers(){
        return cacheManagers;
    }


    public static Map<String,Map<String,Object>> putValue(String serviceFullName,String methodName,String args,Object value){
        Map  classMap = cacheManagers.get(serviceFullName);
        if(null == classMap){
            classMap = new HashMap<String,Object>();
        }
        classMap.put(methodName+args,value);
        cacheManagers.put(serviceFullName,classMap);
        return cacheManagers;
    }

    public static void main(String[] args) {
        //第一版本
        Map<String,Object> cacheManager  =  SingleCacheTest.getCacheManager();
        List list =  new ArrayList<>();
        Employee employee1 = new Employee();
        employee1.setEmpName("郭靖");
        Employee employee2 = new Employee();
        employee2.setEmpName("杨康");
        list.add(employee1);
        list.add(employee2);
        cacheManager.put("com.gupaoedu.crud.service.EmployeeService.getAll()",list);

        List dlist =  new ArrayList<>();
        Department department1 = new Department();
        department1.setDeptName("研发部门");
        dlist.add(department1);
        cacheManager.put("com.gupaoedu.crud.service.DepartmentService.getDepts()",dlist);
        //第二版本
        Map<String,Map<String,Object>> cacheManagers =  SingleCacheTest.putValue("com.gupaoedu.crud.service.EmployeeService","getAll()","",list);

        Map<String,Map<String,Object>> cacheManagers2 =  SingleCacheTest.putValue("com.gupaoedu.crud.service.DepartmentService","getDepts()","",dlist);

        System.out.println(cacheManagers2);
        

    }

 

打断点:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值