2015-11-09 80 views
0

我希望这是一个正确的堆栈。面向对象编程 - 子对象与全局变量(用例)

我正在开发一个类似nethack的游戏,我想咨询一下如何接近设计部分。现在我得到了像位置,Npc,项目等类但我已经有一个问题,如何轻松访问部分位置。

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

我也可以做一个全局变量(像singelton)与门状态,并快速通过这些 - 但它不会是一个OOP。

这里有什么可能?

如果这个问题被覆盖的地方,请与我分享链接,这将肯定是不够:)

谢谢!

Zaqqen

回答

0

在我看来,理论和实际OOP是有区别的。如果你想了解OOP的基础或做论文,理论上可以很好。在其他大多数情况下,你会喜欢实用的。

为什么和它与您的问题有什么关系?

当我还是一个年轻的开发者时,我非常痛苦地合理化我的代码。我是否需要在类ProductStoreConsumer的类别中编码销售方法?

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

这就是你所说的单身人士。我更愿意将它作为一个服务来实现,并帮助我制作一些动态的dependency injection。从这里,我有我的数据类(Product,Store,...)和我的服务类(SaleHandler)是快速的。我所有的逻辑都被编码在这些服务中。这不是纯粹的理论OOP,但它帮助我处理越来越复杂的不断增长的应用程序。

我不知道你怎么能在你的情况下,利用这一点,但我可以给你一些坡度:包含所有的门(模式注册表)

  • 服务类DoorsRegistry
  • 服务类DoorOpener处理开门。

如果你不使用任何框架,帮助你做,你可以实现你的服务为单身,但要知道,pattern singleton is certainly an anti-pattern

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