面向对象编程-子对象与全局对象(用例)



我希望这是一个正确的堆栈。

我正在开发一款类似netack的游戏,我想听听如何处理设计部分的建议。目前我有Location、Npc、Item等课程。但我遇到了一个如何轻松访问位置部分的问题。

假设我在里面有一个对象Door(未继承)。若玩家在里面,很容易检查门是否打开。但另一方面(我用以前的非对象实现得到了这个解决方案),我有一个脚本,在0600打开了所有商店。但现在我需要遍历所有lcoons,检查里面是否有门,如果位置是商店,就打开它们。这真的是一种优化的方式吗?

我也可以用门状态做一个全局(比如singelton),并快速浏览这些状态——但这很难成为OOP。

这里有什么可能性?

如果这个问题在某个地方被涵盖,请与我分享链接,这肯定就足够了:)

谢谢!

Zaqqen

在我看来,OOP的理论和实践是有区别的。如果你想学习OOP的基础或做一篇关于OOP的论文,理论上可以。在大多数其他情况下,你更喜欢实用的。

为什么以及如何与您的问题相关

当我还是一个年轻的开发人员时,我非常痛苦地去合理化我的代码。我应该在类ProductStoreConsumer中对销售方法进行编码吗?

然后我发现了SOA,并在类SaleHandler中设置了我的销售方法。

这就是您所说的单例。我更喜欢将它作为一种服务来实现,并使用一个框架来帮助我进行一些动态依赖注入。从这里开始,我的数据类(ProductStore…)和服务类(SaleHandler)都很快。我所有的逻辑都在这些服务中编码。这不是纯粹的理论OOP,但它对我处理日益增长的应用程序的复杂性有很大帮助。

我不知道你如何在你的情况下使用这个,但我可以给你一些斜率:

  • 包含所有门的服务类DoorsRegistry(模式注册表)
  • 处理开门的服务等级DoorOpener

如果您不使用任何框架来帮助您实现这一点,那么您可以将服务实现为singleton,但要注意,模式singleton肯定是反模式的。

希望这是你正在等待的答案。

最新更新