Я выучил MVC ( модель-представление-контроллер ), но мне не удалось понять, как реализовать его таким образом, который учитывает инкапсуляцию между тремя компонентами.
Например, меня всегда учили, что передняя часть и задняя часть должны быть полностью разделены и никогда не должны взаимодействовать. Но в MVC Модель фактически изменяет представление, что означает, что модель имеет ссылку на представление.
Аналогичным образом, контроллер должен принимать входные данные от внешнего интерфейса (например, кнопки, текстового поля и т. Д.) И изменять модель. Как контроллер может быть отделен от представления И иметь его компоненты (кнопку, текстовое поле) внутри представления (иначе они не будут показаны пользователю). Не означает ли это, что представление должно быть изменчивым?
Я спросил об этом своего профессора и указал на некоторые нарушения в абстракции и инкапсуляции с MVC, и он ответил, что «это часть проекта, чтобы ответственно использовать ссылки на представление и модель. Если кто-то разрабатывает модель случается воспользоваться отсутствием инкапсуляции представления, тогда это нарушает контракт дизайна. "
Есть ли способ реализовать MVC таким образом, чтобы ни один компонент не мог причинить вред другому (например, модель не может удалить сцену обзора, контроллер не может обнулить все данные внутри модели и т. Д. И т. Д.). Является ли ключ просто для установки многих аксессоров / мутаторов в представлении и модели?