若每一局麻将都需要两个骰子,试通过修改单例模式实现
时间: 2024-11-06 12:13:19 浏览: 6
基于Java的南昌麻将房卡模式服务端设计源码
在传统的单例模式中,我们通常关注的是保证在整个应用生命周期内只有一个实例,并提供全局访问点。然而,如果你想要模拟麻将游戏中的骰子摇出结果,我们可以稍微改造一下单例模式,使其不仅有一个实例,还能根据需要生成新的骰子结果。
首先,你可以创建一个名为`DiceRoller`的单例类,这个类包含两个私有变量来模拟骰子(例如,两个随机数),然后添加一个工厂方法来生成新的骰子值:
```java
public class DiceRoller {
private static volatile DiceRoller instance;
private DiceRoller() {}
public static DiceRoller getInstance() {
if (instance == null) {
synchronized (DiceRoller.class) {
if (instance == null) {
instance = new DiceRoller();
}
}
}
return instance;
}
// 模拟掷骰子并返回结果
public int rollDice() {
Random random = new Random(); // 随机数生成器
return random.nextInt(6) + 1; // 返回1到6之间的随机整数
}
}
```
如果你想每局麻将都用新的骰子结果,可以每次调用`rollDice()`方法来获取。由于单例模式的存在,无论何时请求,都会返回同一个`DiceRoller`实例,而不会创建新的骰子实例。
阅读全文