gpt4 book ai didi

java - 实现不违反封装的 OOP 委托(delegate)

转载 作者:行者123 更新时间:2023-11-30 02:01:07 25 4
gpt4 key购买 nike

这是一个关于赌博的简单场景。
有一个赌徒和骰子。赌徒可以掷骰子,然后骰子的值就会改变

对于上述场景,我创建了这个类图

enter image description here

如上图所示
赌徒可以掷骰子,它在 Gambler.roll() 方法中实现
当赌徒掷骰子时,骰子的值会发生变化,它在Dice.roll()方法中实现

使用java代码实现上述场景,如下所示请注意此代码为伪代码,语法可能错误

class Gambler{
private Dice dice;

Gambler(Dice dice){
this.dice = dice;
}

public void roll(){
dice.roll();//delegation call
}
}

/* --------------------------- */

import java.util.Random;
class Dice{
private int faceValue;

public int getFaceValue(){
return faceValue;
}


public void roll(){
//get random value between 1 ,6
Random random = new Random();
this.faceValue = random.nextInt((6 - 1) + 1) + 1;
}
}

我想知道
我的实现是否符合 OOAD 最佳实践并且不违反封装?

特别是当将骰子从 Gambler 委托(delegate)给 Dice 类时Gamblerroll() 方法吗?

最佳答案

你的设计基本上是正确的。唯一的是缺少-faceValue前面属性。我不确定缺少的指示器是否默认为某些内容(乍一看找不到和指示)。无论如何,您应该添加它以使其明确。

此外,Dice应重命名为Die (单数)。

最后(更深入地研究你的代码)你需要一个 Die 的数组有 2 个元素而不是只有一个 dice你需要掷两个骰子。

关于java - 实现不违反封装的 OOP 委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52800943/

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