Частично ваше замешательство связано с тем, что OO и MVC - это совершенно разные концепции проектирования, и на самом деле они могут быть противоречивыми.Я сталкиваюсь с такими же спорами на работе.
Например, ОО говорит, что только сам класс должен знать, как работает класс, а каждый другой класс должен общаться только со своим интерфейсом.MVC говорит, что вы должны иметь тупые объекты данных (модели) практически без функциональности, а отдельные классы содержат бизнес-логику.
OO говорит, что если вам нужно два класса для одинаковой работы, пусть они наследуют общие функциональные возможности от базового классав то время как MVC обычно предпочитает размещать фасад перед классами, которые вызывают другие классы с реальной функциональностью.
Вы можете комбинировать два, но не в тех же местах или слоях.Вы можете использовать композицию для построения моделей (объектов данных), которые являются надмножествами других моделей, и вы можете использовать наследование для создания аналогичных контроллеров, но должны делать это осторожно.
Веб-приложения хорошо подходят дляMVC, и как уже отмечали другие, существуют установленные рамки, которые вы можете использовать, чтобы направлять вас.