這更像是一個設計問題,我在此發佈的主要目的是獲得關於問題解決方案的各種輸入。連續計數器設計問題
我想創建的是一個計數器。計數器可能是單值(單個字符/數字)或多值。所以我設計了這樣一個層次(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