我想知道我是否可以就网络Tic Tac Toe游戏的最佳/最有利设计模式获得您的想法和建议?
我一直在研究以下设计模式:Factory,Abstract Factory,Singleton,Prototype和Builder。
根据您的经验,哪种方式最好用,为什么?
现在,我的Tic Tac Toe游戏是一个线程客户端/服务器游戏,可以通过套接字在互联网上播放。但是,我将以某种方式重构游戏以利用设计模式。
我正在考虑建立一个可用于播放许多不同类型游戏的客户端/服务器架构,例如tic tac toe,connect 5等......
我应该去哪个方向?我希望进入一个能给我一些设计模式经验的方向......
谢谢!
答案 0 :(得分:17)
EndCaveat
您已经在使用设计模式。 DP只是编程中常用的“模式”的行话。首先要问自己的是“我如何识别我编写的网络游戏中的设计模式?”
之后你可以担心前进。要拥有多个游戏,您可能需要使用抽象工厂模式来处理游戏。服务器调用工厂来获取一个知道如何玩所选游戏的游戏对象。
答案 1 :(得分:2)
出于不同的原因使用不同的模式。通常情况下,您会在单个应用程序中看到多个设计模式,这是使用正确模式进行正确工作的情况。
例如,在一个Web应用程序中,我可能将单例模式用于设置类,而工厂类用于数据库连接。单例确保我只有设置对象,工厂类负责处理适合我环境的数据库适配器。
答案 2 :(得分:2)
您命名的模式不是架构模式,但作为拉伸,构建器模式可能非常适合使用通用基础架构来服务不同游戏的多游戏服务器。在这里,您的构建器将根据(抽象)“游戏板”,“游戏规则”,“游戏引擎”等组装特定的游戏引擎。
答案 3 :(得分:2)
由于您希望为许多不同的游戏设置架构,因此这是尝试实施工厂和/或抽象工厂模式的好地方。这样,当你要求一个新的游戏实例时,你可以通过从工厂请求一个新的游戏实例来解耦你的特定游戏的代码。
我想提醒您,设计模式不会自动使您的代码“更好”。不要误解我的意思,设计模式对复杂系统非常有用,并且可以创建可重用,可扩展的代码库(更不用说创建更好的组织和清晰度),但它们只应在有意义时应用。尝试在代码中的任何位置应用设计模式很可能导致实现不适合您的特定问题的模式,或者在复杂性方面过度杀伤。
编写工厂以在hello world应用程序中生成hello world字符串的实例,这显然是过度的。编写工厂以在大型企业客户端/服务器体系结构中分发预配置的套接字连接是更自然的选择。您的应用程序可能位于中间位置,您可以自行决定设计模式是否对您的特定项目有所帮助。
答案 4 :(得分:2)
设计模式只是设计某种东西的名称。一个井字游戏可以使用所有的设计模式,或者它可以没有它们。它们只是如何做某件事的模式。
你想要重构你的代码,但是不要这么做,因为你需要更多的设计模式。这样做是因为你想要清理代码,使其更通用,并可能将其扩展到其他游戏。
要获得使用哪种设计模式的答案,请举一个具体的例子:
Q值。我应该如何限制 network_handler到一个实例? - 一个。 使用Singleton
否则,您可以找到包含几乎所有设计模式的理由。