我有一个Controller,它响应来自View的UI事件,在Model中设置Preference的状态,然后调用其他Controller代码来更改View的内容。
问题:在这种情况下,模型没有告知Controller Preference已经改变 - Controller正在利用它知道它是唯一可以设置该首选项的事实。
具体而言:视图中的下拉菜单已更改,以反映视图中表格中显示的数据类型。模型跟踪该菜单首选项的状态,因为该模型包含业务逻辑,用于生成Controller用于填充View表的文本。
但是模型没有任何关联通知控制器模型的偏好(下拉菜单选项)的表示已经改变;我已经跳过了,因为模型中数据更改的唯一方法是通过视图中用户调用的操作 - 控制器进行调节。
然而,当模型数据发生变化时,绝大多数模型DOES都会向感兴趣的控制器发送消息,因为在这些情况下,业务逻辑可以修改模型。
这是违反MVC范式的吗?
利用Controller知道它是模型中此数据的唯一设置者,这是不纯的吗?
为什么我觉得我正在逃避一些错误的事情?
注意:在这种情况下,Model是C ++,Controller和View是Objective-C&可可。