What are the differences btw MVC and Front Controller design
patterns?
Front Controller design pattern is usually discussed in the context of developing web applications. All incoming requests go through a component they called "Front Controller". The Front Controller inspects the incoming request and decides what to do with it; usually it delegates the request to another component in the application that best know how to handle it.
If you ever used
Struts, they have implemented the Front Controller pattern in their RequestProcessor class (I think this is the right class, I might be wrong) that handles incoming requests and dispatches them to the appropriate Action classes based on the URI entered. These Action classes can perform business logic, and other sorts stuff depending on the request, but its up to the Front Controller (RequestProcessor) to decide which Action gets called.
The RequestProcessor is the Controller "c" in MVC of the Struts framework, since Struts is a web application framework.
MVC is an architectural pattern and its components include a controller, model, and a view. The pattern encourages a modular design in applications by having three distinct layers. Each layer can be independently developed and maintained, thus the effect is to promote loose coupling among these layers. MVC can be used to design any UI applications, not necesary restricted to web applications.
A Front Controller design pattern can be looked at a way to implement the "c" part of MVC in web applications.
Hope this helps