monostate and singleton are two faces of the same medal (global state):
- monostate forces a behaviour (only one value along all class instances)
- singleton forces a structural constraint (only one instance)
singleton usage is not transparent
i.e.:
Singleton singleton = Singleton.getInstance();
monostate usage is transparent
i.e.:
MonoState m1 = new MonoState();
MonoState m2 = new MonoState(); // same internal state of m1 (e.g. static)