gpt4 book ai didi

java - 使用观察者模式在模型中抛出异常

转载 作者:行者123 更新时间:2023-12-02 06:09:24 26 4
gpt4 key购买 nike

是否更有可能使用Java中的观察者模式来处理例如一些简单游戏中的游戏规则,或者只是抛出异常来在UserInterface类中处理这些规则?

每次用户单击用户界面上的按钮时,该 Controller 都会将此操作委托(delegate)给包含其中数据的模型。该模型决定数据与某些游戏规则相比是否正确,或者只是抛出异常以在 Controller 中处理此问题并对每个自定义异常使用react。例如。 (在模型类中;不需要向您显示相应的 Controller 类):

具有 PropertyChangeListener 和 PropertyChangeSupport 的观察者模式:

public void setPlayerNames(ArrayList<String> playerNames) 
{
if(playerNames.size() == 0)
propertyChangeSupport.firePropertyChange("pleaseEnterAtLeastOnePlayerName);
else
startGame();
}

模型中存在一些自定义异常:

public void setPlayerNames(ArrayList<String> playerNames) throws NoPlayerException
{
if(playerNames.size() == 0)
throw new NoPlayerException();
else
startGame();
}

以下哪种方法更符合 MVC 范式?

最佳答案

第一个使用 PropertyChangeListener 来触发与属性更改无关的事件。使用基于事件的模型来实现验证看起来不太直观或易于使用。

第二个抛出异常来表示非法参数。使用 IllegalArgumentException 是表示此类问题的最佳方法。但这样做只是为了防止模型进入无效状态,而不是为了实现验证。 Controller 应在将列表传递给模型之前检查列表的有效性。

关于java - 使用观察者模式在模型中抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22025943/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com