The reason is that this lead to weak classes. You may do important things in the constructor, but here you cannot because you do not know fi the authorization service has been injected (or not). This is the whole point of creating factories.