android中的模型-视图ViewModel模式中游戏逻辑应该在哪里

问题描述 投票:0回答:1

我目前正在使用模型-视图 ViewModel 模式开发一个 Android 扑克游戏应用程序,我不确定游戏逻辑的正确位置应该在哪里。该架构目前看起来像这样:

GameActivity --> GameViewModel --> Repository --> Database
                      |    ^
                      |    :
                      |    :
                      |-> PokerGame 
    

GameViewModel 调用 PokerGame 方法来初始化游戏并传递玩家的交互。 PokerGame 由 GameViewModel 观察。 PokerGame 有一个内部线程,它会一直运行到游戏结束,并频繁地将数据传递到 GameViewModel,就像当前的 jetons 分布一样。

我正在使用 Room 和 LiveData,因此当数据库发生更改时,GameActivity 始终会触发。

如果存储库持有 PokerGame,更好的方法是什么?

java android mvvm architecture
1个回答
0
投票

在简单的 MVVM 模式中,您拥有表示层(视图和视图模型)和数据层(存储库和数据源,例如您案例中的数据库)。

游戏逻辑在某种程度上是一种业务或领域逻辑。现在演示文稿只是向用户呈现或显示信息。 ViewModel 应该尽可能愚蠢。它们仅显示模型的具体数据。另一方面,数据也不应该知道任何更高的逻辑。

正如 Mark 所说,存储库可以被视为域逻辑。因此,在您的情况下,正确的位置是存储库。

存储库(通常)被视为数据层的一部分,仅用于(从本地数据库或远程网络)获取数据。这就是为什么我使用带有用例的领域层。

UseCases 有一个用例,可以连接到多个存储库来完成多项任务,例如设置新游戏、保存游戏状态、加载游戏、操作游戏、结束游戏回合等。

© www.soinside.com 2019 - 2024. All rights reserved.