`

利用单例模式生成序列号

 
阅读更多
package com.ezubo.global.util;

import org.apache.commons.lang3.time.DateFormatUtils;

import java.text.SimpleDateFormat;
import java.util.Date;

/**利用单例模式生成序列号 不适合分布式系统
 * Created by  on 2015-12-29.
 */
public class Generators {
    private static final String DATE_FORMAT = "yyyyMMddHHmmss";
    private static final SimpleDateFormat SIMPLE_DATE_FORMAT = new SimpleDateFormat(DATE_FORMAT);
    private static String forwardTime = "";
    private static Long no = 1l;
    private Generators(){
        super();
    }

    /**
     * 生成序列号
     * @param prefix
     * @return
     */
    public static  String getSeqNo(String prefix){
        synchronized (Generators.class){
            String pfix = prefix == null?"":prefix;
            String currentTime = SIMPLE_DATE_FORMAT.format(new Date());
            if(!currentTime.equals(forwardTime)){
                no = 1l;
            }
            String serializeNo = FormatUtil.leftpad(no++ , "00000000");
            forwardTime = currentTime;
            return pfix + currentTime + serializeNo;
        }
    }
}

 

分享到:
评论

相关推荐

    单例模式 Singleton Pattern

    - **唯一序列号生成**:如订单编号等需要保证全局唯一的情况。 - **计数器**:如网站访问次数统计等。 - **资源密集型对象**:如数据库连接池、线程池等。 #### 实现细节 以下是一个简单的单例模式实现: ```java...

    单例设计模式的优缺点和设计思想

    - 当需要生成唯一序列号的环境,如ID生成器、序列号管理器等,单例模式可以确保每个生成的序列号都是唯一的。 - 在整个项目中需要一个共享访问点或共享数据时,单例模式可以提供统一的访问入口,简化数据访问的流程...

    C# 卡密生成器 源代码

    7. **软件设计模式**:为了提高代码的复用性和可维护性,开发者可能会采用一些设计模式,如工厂模式(用于创建卡密生成器实例)、单例模式(确保卡密生成器类只有一个实例)等。 综上所述,通过研究这个C#卡密生成...

    设计模式特点

    3. **避免资源多重占用**:单例模式可以避免对同一资源的重复占用,有利于资源的合理利用。 4. **设置全局访问点**:单例对象作为一个全局访问点,可以简化系统配置和共享资源的访问。 **应用场景:** - 需要频繁...

    id-generator:自用id生成器

    1. 单例模式:ID生成器通常需要全局唯一,因此可能使用单例模式来保证只有一个实例存在,避免资源浪费。 2. 工厂模式:为了方便地创建和管理ID生成器实例,可能会采用工厂模式来提供统一的创建接口。 3. 模块化...

    Java坦克网络游戏对战版源代码

    7. **设计模式**:源代码中可能会应用到多种设计模式,如单例模式用于服务器实例的创建,工厂模式用于生成不同类型的坦克,观察者模式用于事件通知等。这些模式提升了代码的可读性和可维护性。 8. **错误处理和调试...

    IT设备资产管理(是非常有用的东西哦)

    同时,了解和实践软件工程中的设计模式,如工厂模式、单例模式等,将有助于提升编程技能。 总的来说,C#语言开发的IT设备资产管理系统不仅能够帮助企业管理好其IT资产,同时也是学习和提升C#编程技能的绝佳实践。...

    leet_code-practice:我的代码和想法,每天更新,希望如此

    10. **设计模式**:虽然LeetCode主要关注算法,但也会遇到需要应用设计模式的题目,如工厂模式、单例模式等。 通过这样的实践,开发者不仅可以提升Python编程技巧,还能增强问题解决能力和算法思维,这对于任何想要...

    Java工程师面试宝典

    - **单例模式**:确保一个类只有一个实例,并提供一个全局访问点。 - **工厂模式**:定义一个创建对象的接口,让子类决定实例化哪一个类。 - **装饰器模式**:动态地给一个对象添加新的职责,无需通过子类实现。 - *...

Global site tag (gtag.js) - Google Analytics