In this case I would need to add a check in basically every method, that the manager has been initialized for a type, or add a type argument to each method. Then I might as well make the methods static ;)

To fit properly into this pattern I would have to make TagManager a separate class that has a factory method that instantiates `\OCP\ITags`s.
I can easily do that. It could cache any objects it has already instantiated. Then calling it would still be `$server->getTagManager()->loadTagsFor($type);`. Or maybe `$server->getTagManager()->load($type);` or `$server->getTagManager()->get($type);`?