Exercise: Singleton
This exercise puts the Singleton pattern into code.
Scenario
An application needs a globally shared ID generator. Multiple callers each obtain a handle
via getInstance() and call methods on it. Because they all receive the same object, the
counter increments globally — no caller can create a second generator that resets to zero.
Commands
| Command | Behavior | Output |
|---|---|---|
["next", who] | Return the next id from the shared generator | "<who> got <id>" (ids start at 1 and increase strictly) |
["peek"] | Return the last id issued without advancing the counter | "Last: <id>" (0 if none issued yet) |
["reset"] | Reset the shared generator's counter to 0 | "Reset" |
Ids are integers starting at 1 and increase across all callers until a reset command.
A peek after a reset returns "Last: 0".
7 next Alice next Bob peek next Carol reset peek next Dave
Alice got 1 Bob got 2 Last: 2 Carol got 3 Reset Last: 0 Dave got 1
Alice and Bob each call next, incrementing the shared counter to 1 and 2. peek reads the counter without advancing it, returning Last: 2. Carol calls next and gets 3. reset zeroes the counter and prints "Reset". A peek immediately after reset returns Last: 0. Dave's next then starts from 1 again, confirming the reset took effect.
Your task
Implement the skeleton in the editor below so the commands produce the output described above.