在 Robert Martin 的 Clean Architecture 中,假设我有这个简化版本(不显示模型、网关、边界等其他内容):
现在假设我有一个
View
,有 2 个按钮,Dark
和 Light
,单击时应更改 View
的背景颜色并在屏幕上显示一些文本(文本的颜色应始终为蓝色) )。
所以我想到了这样的事情:
假设我必须在控制器中对两个按钮使用一种方法(可能是因为它是表单或其他什么),
button
中的buttonClicked(button)
变量将包含有关Dark
还是Light
的信息按钮被按下。
现在,本例中的
Interactor
只负责检索要显示的文本,但它不需要知道任何有关背景颜色的信息。
那么,控制器应该告诉演示者选择了哪种颜色(即按钮),还是我应该将此信息转发给
Interactor
,以便它可以将其传递给Presenter
?请记住,Interactor
甚至不会使用此信息。
无法回答您的问题“控制员是否应该与演示者交谈?”在标题中。一般来说,我可以说不应该,但架构设计中没有绝对的。也许,在某些情况或情况下,我们必须为此做出妥协。
对于您展示的案例,您似乎没有将其与状态模式一起考虑。 Clean Architecture 是一个很好的架构,但它从来不违背经典的 GoF 设计模式。 该系统可以维护一个有限状态机,