No, factory class by default shouldn’t be static . Actually, static classes are not welcomed in OOP world since they can also convey some state and therefore introduce global application state. If you need only one factory object to be present, you can control it’s creation through singleton pattern.