« | July 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | |
| 公告 |
关注电子政务、大型企业应用开发、Web、Workflow、MOM、MDA、RCP、GEF email:gmluyang@gmail.com
|
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'> |
|
回复:Sequence生成器与带格式的Sequence 原创空间, 随笔, 软件技术
老仲(游客)发表评论于2006/8/1 18:29:34 |
|
» 1 »
|