栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

单例模式(三)最佳实践枚举单例与ThreadLocal的单例

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

单例模式(三)最佳实践枚举单例与ThreadLocal的单例

枚举单例 代码如下

package com.zw.design.pattern.creational.singleton.hungry.enums;


public enum EnumInstance {
    INSTANCE;
    private  Object object;

    public void setObject(Object object) {
        this.object = object;
    }

    public Object getObject() {
        return object;
    }

    public static EnumInstance getInstance(){
        return INSTANCE;
    }
}

2.测试类

package com.zw.design.pattern.creational.singleton.hungry.enums;

import com.zw.design.pattern.creational.singleton.hungry.HungryLazySingleton;

import java.io.*;


public class Test {
    public static void main(String[] args) throws IOException, ClassNotFoundException {

        EnumInstance hungryLazySingleton=EnumInstance.getInstance();
        //序列化
        ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("singleton_file"));
        oos.writeObject(hungryLazySingleton);
        //读取操作
        File file=new File("singleton_file");
        ObjectInputStream ois=new ObjectInputStream(new FileInputStream(file));
        EnumInstance newLazySingleton  = (EnumInstance) ois.readObject();
        System.out.println("newLazySingleton = " + newLazySingleton);
        System.out.println("hungryLazySingleton = " + hungryLazySingleton);
        //输出两个对象是否是相等的?
        System.out.println(newLazySingleton==hungryLazySingleton);
    }
}

3.编写 ThreadLocalInstance单例模式

package com.zw.design.pattern.creational.singleton.threadlocal;


public class ThreadLocalInstance {
    private  static final ThreadLocal threadLocalInstance=new InheritableThreadLocal(){
        @Override
        protected ThreadLocalInstance initialValue() {
            return new ThreadLocalInstance();
        }
    };

    private ThreadLocalInstance(){

    }

    public static ThreadLocalInstance getThreadLocalInstance() {
        return threadLocalInstance.get();
    }
}

5.测试类这里就不写了 测试代码都在代码如下当中
6.单例模式 在spring mybatis 框架当中的使用 如图所示
6.1 spring 当中这个类AbstractFactoryBean
在mybatis 当中使用 该类ErrorContext 如图所示代码如下

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1023722.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号