【问题标题】:Maintaining state in a spring application?在 Spring 应用程序中维护状态?
【发布时间】:2011-07-07 20:42:33
【问题描述】:
只是寻找一些关于在 Spring 应用程序中维护某物状态的理论。
例如,想象一个作为网络应用程序运行的扑克游戏。有很多事情需要考虑。例如维护玩家在一手牌中的扑克筹码数量、参与一手牌的玩家、每位玩家的牌面值以及共享的公共牌。下注金额、底池总数等。
其他需要考虑的事情是玩家在被弃牌前必须采取行动的时间分配。
无论执行游戏循环的逻辑如何,使用 spring 来跟踪扑克手状态和完整扑克游戏状态的最佳方法是什么。
提前致谢。
【问题讨论】:
标签:
java
spring
session
javabeans
state
【解决方案1】:
与您在网络应用中跟踪任何数据的方式相同;编写一个 DAO 接口然后创建一个实现。例如;
public class PokerHand {
//just a POJO
}
public interface PokerHandDAO {
public PokerHand getPokerHand(long id);
public void updatePokerHand(PokerHand hand);
}
public class InMenoryPokerHandDAO implements PokerHandDAO {
private static Map<Long,PokerHand> hands = new HashMap<Long,PokerHand>();
@Override
public PokerHand getPokerHand(long id) {
return hands.get(id);
}
@Override
public void updatePokerHand(PokerHand hand) {
hands.put(hand.getId(), hand);
}
}
每当玩家采取行动进行更改时,他们都会向网络应用发出请求。您将不得不跟踪几件事情的状态,并且显然您将不得不担心在玩家之间同步状态。