`

一个简易的生成流水号的类

 
阅读更多
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
 
/**
 * 
 * @author ABC
 *
 */
public class SerialNumber {
     
    private static final int MAX_VALUE=9999;
    private static final String FORMAT = "yyMMdd";
    private static final Format DF= new SimpleDateFormat(FORMAT);
    private static final byte[] lock = new byte[0];
    private String prefix = null;
    private Date date = null;
    private int number=1;
    private static Map<String, SerialNumber> map = new HashMap<String, SerialNumber>();
     
    private SerialNumber(String prefix,Date date){
        this.prefix = prefix;
        this.date = date;
    }
     
    public static SerialNumber newInstance(String prefix){
        Date date = new Date();
        return newInstance(prefix,date);
    } 
     
    public static SerialNumber newInstance(String prefix,Date date){
        SerialNumber o = null;
        synchronized (lock) {
            String key = getKey(prefix, date);
            if(map.containsKey(key)){
                o = map.get(key);
                int number = o.getNumber();
                if(number<MAX_VALUE){
                    o.setNumber(number+1);
                }else {
                    o.setNumber(1);
                }
                 
            } else {
                 o = new SerialNumber(prefix,date);
                 map.put(key, o);
            }
        }
        return o;
    }
     
     
     
    private static String getKey(String prefix,Date date){
        return prefix+format(date);
    }
 
    private static String format(Date date){
        return DF.format(date);
    }
     
    public String toString(){
        return  prefix+ format(date) + String.format("%04d", number);
    }
 
    public void setNumber(int number) {
        this.number = number;
    }
 
    public int getNumber() {
        return number;
    }
}
 
分享到:
评论

相关推荐

    简易矢量图形生成系统

    在本项目中,我们探讨的是一个“简易矢量图形生成系统”,它采用了面向对象编程(OOP)的设计理念。这个系统的核心是CShape类,它作为一个基础类,为其他特定图形类提供了一种抽象的表示方式。通过继承CShape类,...

    简易矢量图形生成系统.zip

    简易矢量图形生成系统.zip简易矢量图形生成系统.zip简易矢量图形生成系统.zip简易矢量图形生成系统.zip简易矢量图形生成系统.zip简易矢量图形生成系统.zip简易矢量图形生成系统.zip简易矢量图形生成系统.zip简易矢量...

    Model层代码简易生成器 带源码

    "Model层代码简易生成器 带源码"就是一个为开发者提供便利的小工具,它能自动生成Model类的代码,从而节省手动编写的时间。 该生成器的设计目标是简洁高效,尽管生成的文件格式可能不是最专业或最精确的TXT格式,但...

    简易SiteMap生成器

    本软件是简易的SiteMap生成器,可遍历网站收集网址,生成(全站)用于搜索引擎的SiteMap文件。 软件不会对URL进行校验,所以可能会有错误网址,请生成后自行删除。 ...提示:如果网址数量较多,生成过程将会非常缓慢,请...

    Delphi简易二维码生成器

    总的来说,"Delphi简易二维码生成器" 是一个自给自足的二维码编码工具,它利用Delphi的原生能力实现了二维码的生成,尤其适合那些希望避免额外组件依赖的Delphi开发者。通过学习和理解这个项目,我们可以深入了解...

    一个简易的数组类

    我制作的一个简易的数组类,用于替代c/c++中的"问题"数组,除传统的数组功能外,它还提供了以下功能: 1.由元素个数构造数组. 2.由同类数组构造一个新数组. 3.可重新设置数组大小,是否保持数组原来的值可由用户...

    简易代码生成器

    【简易代码生成器】是一个专为.NET开发者设计的工具,旨在简化编码过程,提高开发效率。这个工具的核心功能是自动生成常见的代码结构,减少程序员在编写基础代码时的手动输入,使得开发者能更专注于业务逻辑和创新...

    ASCET代码生成简易说明.pdf

    存储类在这里被抽象定义,并分配了一个唯一的名称,例如“IROM”、“EXT_RAM”、“FLASH”等。 在代码生成过程中,这些存储类的名称会被转换为特定编译器能够识别的指令。这种转换规则定义在基于XML的`...

    codesmith生成实体类简单模板

    可以定义类头(包括命名空间、类名、访问修饰符等),然后使用循环结构遍历所有列,为每一列生成一个属性。 4. **处理特殊需求**:除了基本属性,你还可以根据实际需求添加额外的代码,比如属性的验证规则、数据库...

    Python-一个简易密码生成器Asimplepassworddictionarygenerator

    综上所述,这个“Python-一个简易密码生成器”项目涵盖了Python编程的多个基础和进阶知识点,包括随机数、字符串操作、字符集、循环、条件判断、函数设计、文件操作、用户交互以及异常处理。通过学习和实践这个项目...

    PHP简易代码生成工具

    在实际应用中,"PHP简易代码生成工具"通常包含以下几个关键特性: 1. **模板系统**:工具支持自定义模板,用户可以根据自己的需求创建或修改模板,模板可以包含变量和逻辑,使得生成的代码更加灵活和个性化。 2. *...

    VB简易二维码生成器

    总的来说,VB简易二维码生成器是通过结合VB的图形处理能力、编码算法理解和可能的外部库引用,实现一个简单易用的二维码生成工具。开发者通过这个项目可以学习到图形处理、编码解码、用户界面设计等多个方面的技能,...

    简易的代码生成器

    本文将深入探讨一个基于VS2013和Winform实现的简易代码生成器,该工具特别适用于生成Model类,且具有高度可定制性,可以根据项目需求进行源码修改,以满足各种功能需求。 1. **代码生成器概述** 代码生成器是自动...

    matlab 简易格柄生成器(jk裙)

    在MATLAB中,"简易格柄生成器(jk裙)"是一个编程实现的工具,用于创建具有特定纹理的格子图案,通常这类图案被用于设计JK(日本女高中生)制服中的裙部图案,也就是所谓的“格柄”。这个工具可能是为了教学、实践...

    Java简易随机数生成

    Java简易随机数生成 下载完请输入测试代码 public static void main(String[] args) { System.out.println(random(50,100));//example System.out.println(random(50.0,100.0)); }

    简易贴片机G代码生成器V1.2

    简易贴片机G代码生成器V1.2

    Excel版批量下载网址简易生成器.zip

    "Excel版批量下载网址简易生成器"是一个工具,主要用于自动化生成大量下载网址,这些网址可能来源于各种在线资源,如云盘、网盘或其他文件分享平台。通过这个工具,用户可以避免手动输入每一个下载链接,极大地提高...

Global site tag (gtag.js) - Google Analytics