Factories can be a really useful tool to decouple code, both in terms of state and to create better separation of concerns. By always creating new instances, shared state can easily be avoided, and factories is a really nice way to encapsulate the creation of such instances.