Model-Delegate is a variation of the ModelViewController (MVC) pattern. Two of the three responsibilities from MVC, namely the view and controller part, are brought together in a so-called User Interface (UI) Delegate. Hence classes with the following roles can be distinguished: * Model classes: hold data specific to the application * View/Controller classes: present information to and interact with the user. Sun says that JavaSwing is more correctly described as using the Model-Delegate pattern rather than the MVC pattern.