利用Singleton多例设计模式创建自增编号

来源:互联网 发布:苹果电子相册软件 编辑:程序博客网 时间:2024/05/28 16:22

利用Singleton多例模式创建商品自增编号:

如下图片:

代码:


namespace FrmSingleton
{
    //生产编号
   public class CreateNewCode
    {
       static Hashtable table = new Hashtable();

      //构造方法设为私有.外部类不能实例化此类

       private  CreateNewCode()
       {
 
       }
       //规则
       private string CodeRole = string.Empty;

       public string CoDeRole
       {
           get { return CodeRole; }
       }

       //开始自增的字段
       private int number=0;

       public static CreateNewCode inctext(string px)
       {
           //实例化一个为null的对象
           CreateNewCode newCode = null;

           //如果存在则返回
           if (table.Contains(px))
           {
               newCode = (CreateNewCode)table[px];
           }
           else
           {
               lock (table)
               {
                   newCode = new CreateNewCode();
                   newCode.CodeRole = px;
                   table.Add(px, newCode);
               }
           }
           return newCode;
       }

       //获取一个新的值
       public string GetNewCode()
       {
           return (string.Format("{0}-{1:0000-0000}", CodeRole, ++number));
       }
       //获取上一个值

       public string LastCode()
       {
           return (string.Format("{0}-{1:0000-0000}", CodeRole, number));
       }

    }
}

 

//这样就实现了根据类型不同产生自增的商品编号.但有一点需要改变.因为这里是存在hashtable当中.在项目中;当应用程序关闭或服务器断电时序列号又从0开始.这个数字就和数据库发生主键重复冲突.解决方法这里就简单很多了.取出数据表最后一个插入的的编号字段

select top 1 Cid from shop order by Cid ordersDate(订单时间) desc 这样取出.再取出格式化后面的值.就可完成