¿Cuáles son las diferencias entre presentador, modelo de presentación, modelo de vista y controlador?

Tengo una idea bastante buena de cómo funciona cada uno de estos patrones y conozco algunas de las pequeñas diferencias entre ellos, pero ¿son realmente tan diferentes entre sí?

Me parece que el presentador, el modelo de presentación, el modelo de vista y el controlador son esencialmente el mismo concepto.

¿Por qué no podría clasificar todos estos conceptos como controladores? Siento que podría simplificar la idea en gran medida.

¿Alguien puede dar una descripción clara de sus diferencias?

Quiero aclarar que entiendo cómo funcionan los patrones y que he implementado la mayoría de ellos en una tecnología u otra. Lo que realmente estoy buscando es la experiencia de alguien con uno de estos patrones, y por qué no considerarían su ViewModel como un controlador, por ejemplo.

Daré algunos puntos de reputación por esto, pero estoy buscando una respuesta realmente buena.

Respuestas a la pregunta(6)

Su respuesta a la pregunta