【问题标题】:With MVC, do interactions with autonomous peripherals belong in the Model or the Controller?使用 MVC,与自主外围设备的交互属于模型还是控制器?
【发布时间】:2008-10-21 15:53:14
【问题描述】:
使用带有观察者模式的 MVC,如果用户操作需要轮询设备(例如相机)以获取数据,轮询应该在控制器中完成并且结果从模型传递出去,还是应该将请求发送到模型和模型本身执行轮询。
这个问题是我试图将我所读到的所有吹捧“瘦控制器”格言的内容与我的直觉相协调,即模型应该只对不获取数据的数据采取行动。
(注意:这个问题可能是主观的。我不完全确定这个问题有一个唯一正确的答案。如果没有,请随时重新标记,因为我会非常有兴趣听听有关该主题的意见。)
【问题讨论】:
标签:
model-view-controller
language-agnostic
model
controller
peripherals
【解决方案1】:
它属于控制器。模型包含信息和业务规则,控制器本质上是除用户、信息或业务规则之外的所有事物的接口,而视图处理用户交互。
有人可能会争辩说,视图也可以控制这一点 - 相机型号和驱动程序可能由用户决定,因此属于该区域。
但我不希望模型具有外围接口。
-亚当
【解决方案2】:
控制器应该执行轮询。模型是我心中状态的快照,所以相机状态应该从控制器传递到模型。
【解决方案3】:
您可以在控制器下方和模型上方添加一个瘦服务层,这使您可以将所有对外围代码的访问权限放在一个地方