美文网首页
Singleton(单态设计模式)之全局随机数生成器的设计

Singleton(单态设计模式)之全局随机数生成器的设计

作者: wswenyue | 来源:发表于2015-05-05 16:15 被阅读200次

随机数生成器的设计要点

  • 唯一性(保证全局只由一个类对象来生成)

什么是单态设计模式?

单态设计模式就是:一个类只生成一个实例

在何种情况下需要使用单态设计模式?
请大家查看@likika2012的单例模式(Singleton)的常见应用场景

Singleton(单态设计模式)要点

  • 单态设计模式(保证类的对象在内存中只有一个)
  • 1、把类的构造函数私有
  • 2、自己创建一个类的对象
  • 3、对外提供一个公共的方法,返回类的对象

闲话不多说,我们来看代码实现

class TokenProccessor{
    
    private TokenProccessor(){}
    
    private static final TokenProccessor instance = new TokenProccessor();
    
    public static TokenProccessor getInstance(){
        return instance;
    }
    
    
    public String makeToken(){ 
        
        //  利用系统当前时间来保证随机数的唯一性,这也是struts里获取随机数的方法,
        //  token获取随机数的长度不确定,要使获取长度一致,要经过MD5提取数据摘要
        String token = (System.currentTimeMillis() + new Random().nextInt(999999999)) + "";
        
        try {
            //MD5数据摘要也称数据指纹   其长度是128位长  ,也就是16个字节  
            MessageDigest md = MessageDigest.getInstance("md5");
            byte md5[] =  md.digest(token.getBytes());
            
            //md5[]得到的是任意的二进制数据,若直接转成字符输出会产生乱码
            //base64编码 是将三字节转成四字节,每个字节范围为0-63,并对应相应的字符,
            BASE64Encoder encoder = new BASE64Encoder();
            return encoder.encode(md5);
            
        } catch (NoSuchAlgorithmException e) {
            //把异常转成运行时异常往上抛
            throw new RuntimeException(e);
        }
        
    }
    
}

相关文章

网友评论

      本文标题:Singleton(单态设计模式)之全局随机数生成器的设计

      本文链接:https://www.haomeiwen.com/subject/vlsifttx.html