MVVP, MVC и MVP

Мне нужно сравнение этих 3х архитектурных паттернов проектирования. Никак не могу понять, во первых - какая между ними разница, а во вторых - где тогда стоит использовать один, а где - другой.

MVVP - Данный подход позволяет связывать элементы представления со свойствами и событиями View-модели. Можно утверждать, что каждый слой этого паттерна не знает о существовании другого слоя.

MVC - Основная идея этого паттерна в том, что и контроллер и представление зависят от модели, но модель никак не зависит от этих двух компонент.

MVP - Данный подход позволяет создавать абстракцию представления. Для этого необходимо выделить интерфейс представления с определенным набором свойств и методов. Презентер, в свою очередь, получает ссылку на реализацию интерфейса, подписывается на события представления и по запросу изменяет модель.

https://habr.com/post/215605/ - почитайте статью. Скриншот оттуда