【发布时间】:2019-02-01 12:28:57
【问题描述】:
我对概念感兴趣,而不是实现。考虑CarBookingRequest 场景,用户通过界面请求预订汽车。让我们在以下约束条件下讨论它,并通过保持 Controller 和 Model 简单的方式仅考虑 View:
- 有一个控制器类/代码包含代表相关动作的所有功能
- 有一个模型类/代码只处理带有少量表的单个数据库(没有其他数据模型)
可以通过多种接口发出请求:
1.桌面应用程序
用户单击Button 会触发Click 事件,该事件又被预先编程为通过请求NewBooking 调用BookingController。比如:
Event OnClick() {
C = New BookingController
C.Request('NewBooking')
}
2。移动应用程序
用户点击Button 触发Touch 事件,该事件又被预先编程为使用请求NewBooking 调用相同的BookingController。比如:
EventListener OnTouch() {
C = New BookingController
C.Request('NewBooking')
}
3.自动售货机
用户在触发事件的机器上按下PushButton,该事件被预编程以使用请求NewBooking 调用相同的BookingController。比如:
Event OnPress() {
C = New BookingController
C.Request('NewBooking')
}
假设 Web 界面 和 服务界面 的实现类似,其中请求由另一个系统或计划任务发出。显然,所有这些实现都是用不同的语言和平台编写的不同版本的 BookingViews。现在,如果我事先知道这些实现并且我正在制作一个 Booking MVC,那么我的视图、控制器和模型类应该是什么样的?或者有多少?为什么?
我是否应该有一个“主要”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 应该以自己的方式分别调用控制器吗?
可能有太多问题,但我认为我的视图、控制器和模型应该是可重复使用的,并且每个新的 Interface(移动设备、机器或 Web)都应该只需要它们对 View(事件或显示),而连接和获取数据代码保持不变。
【问题讨论】:
标签: model-view-controller design-patterns