Let us take a look at MVC (Model-View-Controller) pattern. This is a design pattern that is extremely popular in object-oriented design. MVC pattern is very popular in Java, most of Swing components use this technique for presenting and manipulating widgets. Here is an Alexander style description of this pattern.
Problem
We want to be able to present and manipulate the same data in different ways.Context
Under current object-oriented techniques data is a part of a single object that can manipulate and display it, the problem is that for every new way of presenting the data we have to modify this object.Solution
Split up the single object into three objects: one will contain the data, one will deal with presentation, and one will deal with the controller. This way, if we want to present the information differently, we can just replace the presentation module and leave the data and the controller unchanged.
A good example for the use of MVC in real world is the problem of adaptive multimedia application. We are faced with the problem of presenting the same information (ex. website) on desktop PC, PDA, or cell phone. Instead of creating three different versions of an application and having three different versions of data, we can use an MVC model to create an application once and then just replace a single module that deals with presentation and/or control for an appropriate platform. This way, the core of an application will remain the same, only the presentation and control methods will change between platforms.