Los patrones GRASP describen principios para asignar responsabilidades a objetos, incluyendo asignarlas al experto en la información, al creador de nuevas instancias, y de manera que se mantenga un bajo acoplamiento y alta cohesión entre las clases. El patrón Controlador asigna la responsabilidad de manejar eventos del sistema a una clase controladora.