All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.hecloud.runtime.common.generator.IDFactory Maven / Gradle / Ivy

package com.hecloud.runtime.common.generator;

import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

/**
 * ID工厂类,单例模式
 * 用来生产各种UUID,MaC地址类和时间序列的字符串
 *
 * @author LoveinBJ
 */
public class IDFactory implements Serializable {

    /**
     *
     */
    private static final long serialVersionUID = 1L;

    /**
     * 私有构造方法
     */
    private IDFactory() {
        if (null != IDFactory.instance()) {
            // 防止利用反射机制实现多个对象的漏洞
            throw new RuntimeException("IDFactory正在遭受反射攻击!");
        }
    }

    /**
     * 获取ID工厂实例方法
     *
     * @return 实例
     */
    public static IDFactory instance() {
        return FactoryContainer.instance;
    }

    /**
     * UUID生成器
     *
     * @return UUID
     */
    public String uuid() {
        return UUID.randomUUID().toString().replace("-", "");
    }

    /**
     * MAC地址生成器
     *
     * @return MAC
     */
    public String mac() {
        return UUID.randomUUID().toString().toUpperCase();
    }

    /**
     * 时间序列字符串,例如:20170426224926309 精确到毫秒
     *
     * @return 时间序列
     */
    public String timestamp() {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmssSSS");
        return simpleDateFormat.format(new Date());
    }

    /**
     * 防止反序列化获取多个对象的漏洞
     *
     * @return 对象
     */
    private Object readResolve() {
        return FactoryContainer.instance;
    }

    /**
     * ID工厂容器,利用静态内部类的方式实现单例模式,屏蔽多线程干扰
     *
     * @author LoveinBJ
     */
    private static class FactoryContainer {
        private static IDFactory instance = new IDFactory();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy