Describe the differences between MVC, MVVM, and VIPER architecture patterns. Which do you prefer and why?