这更像是一个设计问题,我在此发布的主要目的是获得关于问题解决方案的各种输入。连续计数器设计问题
我想创建的是一个计数器。计数器可能是单值(单个字符/数字)或多值。所以我设计了这样一个层次(READ键=计数器):
Key
|
-----------------------------------------------
| | | |
SingleValueKey MultiValueKey NumericKey AlphaNumericKey
(there could be further mix and match between these types)
现在在设计MultiValueKey,我以为我可以简单地使用正SingleValueKey的集合来创建一个正字符计数器。对于例如一个2位(多值)计数器将使用一个大小为2的SingleValue数值计数器的数组。我最终计划的是一个可变长度的字母数字键集,基数为64,适用于短网址。数字上下文只是一个简单的例子。
我现在被卡住的是低阶计数器的“滚动”或“包裹”到递增更高阶的计数器中。敌人,例如对于一个2位数的计数器,一旦单位位置达到9,下一个数字将在单位位置绕回到0并且十位增加1.
我有几个方面需要您对如何反馈应该这样做:
- 单值计数器应该在它达到其最大值时抛出异常?还是应该自动换行?还是应该允许用户指定应采取哪些方法?
- 如果单个计数器应该抛出一个异常(我认为),应该有一个“重置”方法将计数器重置为开始 - 调用者应该处理异常并调用重置(在它开始之前/之后)以增加更高阶的计数器)。这会是一个很好的设计吗?
- 当计数器刚刚初始化时 - 新的SingleValueNumericKey() - 计数器的值应该是多少?它是否应该准备好使用,没有价值,或者它应该是它的价值集中的第一个价值?
- 类似于prev问题,当调用“reset”方法时,计数器的值应该是多少?
请帮助我在这里输入您的宝贵意见。如果您对设计本身有任何建议,欢迎!如果我拿走从这个线程的东西,我要提到它在我提交 - 这样你才会有信用的建议:)
谢谢
Madhur Tanwani
编辑:添加我的最后用例来澄清杰森的所有问题。
我最终计划的是一个字母数字键集,基数为64,适用于短网址。数字上下文只是一个简单的例子。 – madhurtanwani 2010-10-15 11:39:44