
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