最近,我对一个Job应用程序进行了在线测试,结果非常糟糕。
我的挑战是用C#创建一个石头剪刀布游戏(以后可以添加蜥蜴和Spock)。
我决定创建一个抽象类Choice,所有可能的选择都通过多态来获得其行为。
这个选择类的选择列表为空,其中包括所有获胜的可能性。像这样:
public class Scissor : Choice
{
public Scissor()
{
Init();
}
public override void Init()
{
Winners = new List< Choice >();
Winners.Add(new Paper());
Winners.Add(new Lizard());
}
}
问题是我正在重新创建Choices的另一个实例(例如Paper和Lizard),然后再拥有自己的获奖者列表,并且这在我的程序中创建了Stackoverflow。
我的解决方案是:创建Scissors类,由我自己运行Init()方法(从构造方法中删除)。我不喜欢这种方法,因为在“设计模式”概述中看起来很糟糕。 (我可以为其他开发人员创建另一个类并忘记调用Init方法的映像。
采访者告诉我,我应该使用Singleton,但我看不出有什么帮助。
有人可以帮我解释一下这有什么帮助吗?