Application Structure

It’s never easy to start with a clean slate. Whether your application is big or small, the decisions you make at the beginning of the design process affect the application’s entire lifetime. Wouldn’t it be nice if there was a design pattern to define the overall shape of the presentation tier? The Model-View-Controller (MVC) pattern is just such a pattern.

The Model-View-Controller Pattern

As its name suggests, MVC breaks the problem of user interfaces into three distinct pieces: model, view, and controller. The model stores the application’s state. A view interprets data in the model and presents it to the user. Finally, the controller processes user input, and either updates the model or displays a new view. By carefully dividing labor and controlling communication between these three pieces, we can achieve a robust, extensible architecture for the user interface and the application as a whole.

Figure 3-2 gives an overview of the communications within the MVC architecture. While MVC was originally designed for graphical environments—in which the user acts directly via a mouse or keyboard—over time, it has been adapted for use in other areas of programming.

Overview of the MVC pattern
Figure 3-2. Overview of the MVC pattern

The MVC paradigm extends quite naturally to enterprise software, where the “user” may be a web browser or web server. Since the presentation tier is request-driven, ...

Get J2EE Design Patterns now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.