The model-view-controller pattern proposes three main components or objects to be used in software development: 1  A Model , which represents the underlying, logical structure of data in a software application and the high-level class associated with it.