我正在尝试基于控制台开发简单的游戏 YuGiOh。我制作了 Supercard,它将继承 3 类陷阱卡、魔法卡和怪物卡。但是我应该在那个游戏中添加一些模式,单例模式和工厂模式之间的最佳选择是什么。
我应该把模式放在我的游戏中的什么地方?
我正在尝试基于控制台开发简单的游戏 YuGiOh。我制作了 Supercard,它将继承 3 类陷阱卡、魔法卡和怪物卡。但是我应该在那个游戏中添加一些模式,单例模式和工厂模式之间的最佳选择是什么。
我应该把模式放在我的游戏中的什么地方?
你的问题太模糊了,任何人都无法帮助你,单例模式和工厂模式有完全不同的用途,你可能可以在应用程序的某个地方同时使用它们。
在设计的初始阶段不要担心模式,在你自己的脑海中弄清楚你希望事情如何工作,也许画一些图表,想想你需要什么类,并产生一个高级的 OO 设计。模式将在稍后出现,一般来说,如果您已经完成了上述步骤,那么应该清楚您应该使用哪些(如果有的话)模式。
单例模式适用于单实例对象。工厂模式用于创建超类或对象的不同实例。
单例模式适用于游戏本身和对象管理器(图形对象实例或任何渲染对象、声音管理器、游戏管理器、逻辑管理器等)
工厂模式在洗牌或任何其他对象生成机制时可用。可能是人工智能移动等。
还有许多其他模式可用于事件链、AI、对话事件等。
不过,codebox 是对的,您需要某种图表来至少正确地详细说明游戏。也许你应该从那开始。(创建类图和序列图将适用于 YuGiOh)
这取决于你想要什么。单例实例在整个程序中都是唯一的,例如,您将能够拥有一个单一的陷阱卡,该陷阱卡将由程序中的所有其他对象共享。如果您只是想要一种创建好卡片实例的方法,您可能更喜欢工厂模式。
如果您问“将我的模式放在哪里”和“应该是工厂还是单身”,您应该重新考虑您的方法。一般来说,模式的设计和实现是为了解决软件开发过程中遇到的常见问题。在这些问题出现之前,您不要无目的使用它们。
我不知道 YuGiOh 是什么,但是根据您的描述,如果您真的想使用这些模式(即教育目的),我会使用 Factory 来构建这些卡片对象,并使用单例来实现一些日志记录机制,但话又说回来 - 如所述上面你的问题是含糊的。