查看第一个MVP(或MVVM)和框架通信

查看第一个MVP(或MVVM)和框架通信,mvvm,frameworks,dependency-injection,inversion-of-control,mvp,Mvvm,Frameworks,Dependency Injection,Inversion Of Control,Mvp,好的,我对MVVM/MVP模型以及如何让triad与框架/层的其余部分进行外部通信做了一些思考,最好的解决方案可能是使用依赖注入 尽管如此,我现在的问题略有不同:如果我不想让演示者知道框架,但我想让框架知道一旦创建演示者,该如何处理 举一个简单的例子:如果我们谈论GUI,可能不容易描绘,所以让我们假设我的MVVM(或任何东西)在游戏中为一个实体建模 有视图(实体的图形表示),有模型(能量等),还有演示者(当发生事情时如何响应) 现在,让我们假设有一个中介来管理游戏实体之间的通信,因此想要知道所有

好的,我对MVVM/MVP模型以及如何让triad与框架/层的其余部分进行外部通信做了一些思考,最好的解决方案可能是使用依赖注入

尽管如此,我现在的问题略有不同:如果我不想让演示者知道框架,但我想让框架知道一旦创建演示者,该如何处理

举一个简单的例子:如果我们谈论GUI,可能不容易描绘,所以让我们假设我的MVVM(或任何东西)在游戏中为一个实体建模

有视图(实体的图形表示),有模型(能量等),还有演示者(当发生事情时如何响应)

现在,让我们假设有一个中介来管理游戏实体之间的通信,因此想要知道所有正在创建的游戏实体

我能看到的解决这个问题的唯一方法是通过DI让演示者知道有关中介的信息,从而让演示者在框架中介中注册自己

尽管我宁愿避免让演讲者知道调解人的情况,因为我更愿意让框架知道新创建的演讲者并在调解人中注册(这应该是国际奥委会的原则)

使用视图优先的方法是否可能/合理


谢谢分享您的想法。

既然已经有几个框架解决了这个问题,为什么还要发明一个新的框架呢?看看caliburn micro。Is允许您在“视图优先”和“视图模型优先”方法之间进行选择。而且它支持大多数IoC容器。

您好,非常感谢您的回答!我不想发明一个新的框架,实际上我也不想使用IoC容器来连接依赖项。这个问题更多的是一个“哲学”问题,这就是为什么它会造成混乱。我再举一个例子。国际奥委会讲述了好莱坞的原则,对吗?现在,如果演示者必须知道使用服务等的框架依赖关系,那么它就不再遵循好莱坞原则。所以我想知道是否有人考虑过将演讲者注入到框架中以应用H原则。很抱歉我的胡言乱语,但我刚刚意识到哪里可能是我困惑的根源。到目前为止,我认为ViewModel应该由视图本身创建,而不是通过几种机制(IoC容器、DI、ServiceLocator)连接。这实际上意味着创建viewmodel不是视图的责任,因此viewmodel应该由框架本身创建。这样,我想做的更有意义。