如果这是一个愚蠢的问题我很抱歉,但我最近有以下用例。
我有一个我想要重用的组件,在一个实例中我希望能够编辑数据,而在另一个实例中我只希望它可以被查看。
所以这意味着在一个用例中我想渲染说标签1,2和3以及编辑按钮,在第二个用例中我不想渲染编辑按钮。
现在我正在使用mvp模式,我目前的理解是逻辑不应出现在演示者中。
我的问题是:如果我想基于演示者的逻辑渲染组件,我该怎么做而不在视图中引入逻辑。
非常欢迎简短的例子:)
答案 0 :(得分:0)
后端>发送> 模型>到> 演示者>在>上调用显示方法视图
您的模型将是POJO(通常是从后端检索的共享对象)。演示者将进行RPC调用以检索它。根据模型配置,演示者在接收模型时将会或不会调用视图上可用的某些“setAsEditable(Boolen editable)”方法。
视图>将事件发送到> 演示者>更新> 模型>并将其发送给> 后端
当用户对视图执行某些操作时,演示者将收到通知(通过事件或基于接口)并更新模型。请注意,模型更新逻辑(如显示逻辑)也应位于演示者中。然后,演示者(通过RPC)将模型推回到后端。业务逻辑留在后端。
个人注意事项:
Hardcore MVPers会强制组件之间严格的松耦合,但它通常涉及编写大量事件类和/或接口(有些称之为样板)。务实。当我知道我的组件不会被重用时,我有时会避免使用这种架构,并等到我需要重用。
但如果你能保持纯洁,那就很好!