title: What we should use instead of a "manager" class in a good OOP design?
body: <p>I'm having trouble designing my game engine. For example:</p>
  
  <p>When I think in <strong>Resources</strong>, I think in a <strong>ResourceManager</strong> class to manage resources on my engine.</p>
  
  <p>This class <strong>gets several responsibilities</strong>:</p>
  
  <ul>
  <li>Load resources.</li>
  <li>Map resources by an identifier.</li>
  <li>Ensure that resources are loaded only once.</li>
  <li>Free unused resources (using smartpointers).</li>
  </ul>
  
  <p>This works for me, but I have read on every OOP design tutorial that managers are <strong>ambiguous</strong> classes with <strong>high coupling</strong> and <strong>low cohesion</strong>. I understand this, and I agree, but I searched almost the whole Internet to find a clear example of a real alternative to Managers but I didn't found it. </p>
  
  <p>Some people explain, for example that a ResourceManager should be divided into smaller classes: A <strong>ResourceFactory</strong>, a <strong>ResourceCollection</strong>, a <strong>ResourceCache</strong>, a <strong>ResourceFacade</strong>... </p>
  
  <p>I know all this design patterns (Factory, Collection, Facade, etc.) But I don't actually understand how this can be joined to create a (easy to manage) resource management system.</p>
  
  <p><strong>My question is:</strong> Is there some tutorial or document with a clear example? Can someone explain an example of this system? I'll thank you if you can write a small example in C++ or another similar language.</p>
  
  <p>Thanks in advance for your help!</p>