Мне интересна концепция, а не реализация.Рассмотрим сценарий CarBookingRequest
, когда пользователь через интерфейс запрашивает бронирование автомобиля.Давайте обсудим это при следующем ограничении и рассмотрим только View
в перспективе, оставив Controller
и Model
простыми:
- Существует один класс / код контроллера, который содержит все функции, представляющие соответствующие действия.
- Существует один класс / код модели, который работает только с одной базой данных с несколькими таблицами (без других моделей данных)
Может быть много интерфейсов, через которые можно сделать запрос:
1.Настольное приложение
Пользователь нажимает Button
, который запускает событие Click
, которое, в свою очередь, запрограммировано для совершения вызова на BookingController
с запросом NewBooking
.Что-то вроде:
Event OnClick() {
C = New BookingController
C.Request('NewBooking')
}
2.Мобильное приложение
Пользователь нажимает Button
, который запускает событие Touch
, которое, в свою очередь, запрограммировано для вызова того же BookingController
с запросом NewBooking
.Что-то вроде:
EventListener OnTouch() {
C = New BookingController
C.Request('NewBooking')
}
3.Торговый автомат
Пользователь нажимает PushButton
на автомате, который запускает событие, которое запрограммировано заранее, чтобы позвонить тому же BookingController
с запросом NewBooking
.Что-то вроде:
Event OnPress() {
C = New BookingController
C.Request('NewBooking')
}
Предположим, аналогичная реализация для Веб-интерфейс и Сервисный интерфейс , где запрос сделан другой системой или запланированной задачей.Очевидно, что все эти реализации представляют собой разные версии BookingViews , написанные на самых разных языках и платформах.Теперь, если я знал эти реализации заранее, и я делаю бронирование MVC, каким должен быть мой класс View, Controller и Model?или сколько?и почему?
Должен ли я иметь класс "Main" BookingView
с такой функцией, как:
Function CallController(Command) {
If Command = 'NewBooking' {
Return New BookingController
}
or some good implementation of controller/action registry to fetch appropriate controller
}
, и каждый конкретный View
должен по очереди вызывать эту функцию, котораязатем назовем BookingController
как:
Event OnClick {
C = MainView.CallConroller('NewBooking')
}
Или каждый View
должен вызывать контроллер отдельно по-своему?
Может быть, слишком много вопросов, но я придерживаюсь мнениячто мой View, Controller и Model должны быть многоразовыми, и каждый новый Interface
(мобильный, машинный или сетевой) должен требовать только определенной обработки View
(событий или дисплеев), в то время как код подключения и выборки данных остается без изменений.