【发布时间】:2012-04-18 17:48:27
【问题描述】:
最近有人告诉我如何以 Class 1 调用 Class 2 调用 Class 1 的形式循环引用被认为是非常糟糕的做法,我就是无法理解这一点。我的意思是,如果这些课程在 2 个不同的项目中,我完全理解问题所在,但如果它们在同一个项目中,那会很糟糕吗?在某些情况下……您究竟是如何防止这种情况发生的?
例如:我有一台服务器。客户端连接到它,客户端从套接字派生或持有它,负责网络内容以及帐户ID等一些信息。当有新内容时,该客户端调用数据包处理程序,现在数据包处理程序需要来自客户端的信息,并且必须将信息发回。我将客户端传递给数据包处理程序,因此它可以调用它的发送函数等。
担心这个的人认为这是上面提到的不好的做法,并试图根本不这样做,尽管我很少看到服务器,尤其是大型服务器,将所有数据包处理保留在客户端类中.此外,您可能会比处理程序更进一步,并调用更多类。将所有内容保留在客户端内部是一团糟。那么……这真的是不好的做法吗?
如果是,人们将如何绕过它?要做到这一点,您需要在 Client 中或多或少复杂的对象集合,您可以将其传递下来,而无需再次调用 Client 的函数...
就像我说的,我无法真正解决这个“问题”。有人可以帮帮我吗?
【问题讨论】:
-
F# 让循环类引用变得非常有趣。
-
查看“相关”问题列表。 ---------> 看起来有几个可以帮助回答这个问题。
-
在大多数情况下,我发现我可以将此类代码重构为消费者/生产者问题,从而消除一半的耦合,从而使整体设计更加简洁。在这不起作用的情况下,我使用特定接口(无论如何我都尝试这样做);再一次,我发现这些可以最大限度地减少对核心所需方面的“循环引用”,并使程序更加清晰。
标签: c# oop dependencies