Lamentablemente no hay una sola fuente, pero debes de conocer los siguientes temas:
- Fundamentos de Programación Orientada a Objetos.
- Principios de desarrollo orientada a objetos.
- Patrones de diseño.
- Refactorización.
Si haces una búsqueda en google encontraras mucho de estos temas.