Choosing a design pattern for the user interface of your application involves weighing trade-offs between testability, complexity, developer tool support, and capabilities. There are two very prominent camps in user interface patterns: Forms & Controls