La primera respuesta es buena y da algunas respuestas estructurales, pero otro enfoque es pensar sobre lo que estás haciendo Los módulos tratan de proporcionar métodos que puede usar en múltiples clases: piense en ellos como "bibliotecas" (como vería en una aplicación de Rails). Las clases son sobre objetos; los módulos son sobre funciones.
Por ejemplo, los sistemas de autenticación y autorización son buenos ejemplos de módulos. Los sistemas de autenticación funcionan en múltiples clases de nivel de aplicación (los usuarios son autenticados, las sesiones administran la autenticación, muchas otras clases actuarán de forma diferente en función del estado de autenticación), de modo que los sistemas de autenticación actúan como API compartidas.
También puede utilizar un módulo cuando tenga métodos compartidos en varias aplicaciones (una vez más, el modelo de la biblioteca es bueno aquí).
http : //goo.gl/p95BL6 Este diagrama puede ayudar. – shin