The Model-2 Architecture (also known as Model-View-Controller) is one of the most well-known Architectural Design Patterns in Microsoft .NET and Java. Because Model-2 Architecture is componentized by nature, which allows you to separate business component concerns, then it offers many design advantages in your solutions such as flexibility, scalability, re-usability and security.
However, there are no perfect solutions. Model-2 also has some disadvantages such as complexity, and learning curve because there are many things to learn when using Model-2.
Complex Swing components such as JTable, JTree, and JList are good examples of an API that uses Model-2 solutions. There are also many good Model-2 Web Frameworks exists such as OpenSymphony projects and Apache Struts.
 Model-View-Controller [MSDN]
 Model-View-Controller [Java BluePrints]