本站首页    管理页面    写新日志    退出


«July 2025»
12345
6789101112
13141516171819
20212223242526
2728293031


公告

关注电子政务、大型企业应用开发、Web、Workflow、MOM、MDA、RCP、GEF

email:gmluyang@gmail.com


链接

好友
bluedavy-林昊
刑红瑞
SixSun-翻译
Birt中文指南
SixSun-OpenDoc
Eclipse RCP and Web in action(编写中)

我的分类(专题)

日志更新

最新评论

留言板


Blog信息
blog名称:SixSun的Blog
日志总数:152
评论数量:372
留言数量:13
访问次数:2374220
建立时间:2004年12月13日




[设计模式]Sequence生成器与带格式的Sequence
原创空间,  随笔,  软件技术

SixSun 发表于 2006/3/25 12:56:23

    PS:在这边所看到的 UML 图都是使用 Jude 绘制的,Jude 是一个纯 Java 撰写的 UML 工具程序,可运行与 Windows、Linux 等多个平台,体积小,使用简易。 序列维护接口 序列号生成器 证书号模板解析 证书号装饰类 1.序列的实体类,持久化一个序列实体。A. StartWith : 定义序列将生成的第一个编号,默认值为1;B. IncrementBy : 定义后续生成的编号采用的递增或者递减量,可以为负值,默认为1;C. MinValue : 序列将生成的最低编号,递减序列中使用的界限值,默认为0(即不启用减序列界限值);D. MaxValue : 序列将生成的最大编号,递增序列中使用的界限值,默认为0(即不启用增序列界限值);E. Cycle :配置序列在达到界限值是重复编号,默认不开启;F. Cache : 序列缓存大小,提高序列性能,默认为20;G. NoCache :是否开启缓存,默认不开启缓存;H. LastUpdataDateTime : 序列最后的更新时间;I. NextValue :取得的下一个序列号; 500)this.width=500'> 2.Sequence的持久化操作(基于表或Oracle系统自身的序列性质来维护序列,以下是基于表的序列操作实现)A. Create SequenceB. Updata SequenceC. Drop SequenceD. Get Sequence by nameE. Get SequencesF. Get Current Sequence valueG. Get Next Sequence value(synchronized 操作)    1.resetSequence  (重设序列操作)    2.outOfMaxValue  (序列上限越界时候操作)    3.outOfMinValue  (序列下限越界时候操作)    4.updateNextValue(更新序列)      4.1 first updata 序列(保证每次都能取到新号不会重号)      4.2 second select 序列 (保证每次都能取到新号不会重号) 500)this.width=500'> 3.SequenceManager/SequenceGeneratorA. SequenceManager :序列管理器接口(Singleton)A. SequenceGenerator:序列号生成器接口(Multion) 500)this.width=500'> 4.SequenceTemplate(将SequenceGenerator生成的简单数字序号格式化成业务所需要的证书号格式)A. SimpleSequenceTemplate 实现abstract class ISequenceTemplate 的parseTemplate()接口,解析某种静态字符串格式,生成一个动态的格式,支持方法调用,动态参数等等;for example:string:Prefix;date:yyMMddHHmmssZ;number:00000:nextValue:sequenceName;->解析为Prefix060325141751+080008062string(字符串常量):Prefix为指定的一个常量string常用于设置业务系统中当前打印证书的证书号中某个固定值;date(日期) :yyMMddHHmmssZ日期格式date常用于得到业务系统中当前打印证书时证书号中日期的部分(如卫生许可证等等),可以设置多种日期格式;number(序列号) :(1)00000为序列号的格式,低于5位数前面补零;(2)nextValue为方法名 (3)sequenceName为方法名的一个动态参数(这里是某个序列的名称)number常用于得到业务系统中当前打印证书时证书号连续序列号的部分,此处改进了原有系统中只能解析date,string这种自身就能产生值的格式部分,增加了可直接调用方法和传递变量的解析,可以满足客户各种变态业务需求; 500)this.width=500'> 5.ISequenceDecoration(将生成证书号中每个部分的业务实现都分解出来,并且与SequenceTemplate的解析是低耦合)1. 一个证书号中不同信息的生成,可以实现ISequenceDecoration的abstract public String decor();方法,返回一个字符串,setStytle()设置风格;2.如果需要实现调用一个方法才能实现的业务需求,可以在ISequenceDecoration的实现类中添加这些方法,并在静态字符串格式中写好,SimpleSequenceTemplate会通过reflect机制调用这些方法生成你想要的字符串;总结:ISequenceDecoration将业务需求和解析SequenceTemplate分离开来,当业务需求发生变化的时候只要实现新的ISequenceDecoration接口就行了,将关注点仅仅放在业务的实现上即可,至于是如何解析这个格式模板的就不用你操心了,除非你要实现自己的格式解析类,BT需求放马过来吧;500)this.width=500'> 500)this.width=500'> 6.Design(基本结构) 500)this.width=500'>


阅读全文(5171) | 回复(1) | 编辑 | 精华
 


回复:Sequence生成器与带格式的Sequence
原创空间,  随笔,  软件技术

老仲(游客)发表评论于2006/8/1 18:29:34

这么有前途的东东,怎么不分享啊?


个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


» 1 »

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.063 second(s), page refreshed 144761621 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号