Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 包含观测器设计模式的循环依赖_Design Patterns_Architecture_Circular Dependency_Circular Reference - Fatal编程技术网

Design patterns 包含观测器设计模式的循环依赖

Design patterns 包含观测器设计模式的循环依赖,design-patterns,architecture,circular-dependency,circular-reference,Design Patterns,Architecture,Circular Dependency,Circular Reference,我正在从事一个涉及服务器和一些客户端的多层项目 大多数消息由客户端发起并发送到服务器,这意味着它们看起来如下所示: 客户端->中间层->服务器 但有些消息是服务器启动的更新,这意味着它们是反向的。 所以我需要实现Observer模式,其中客户端是Observer,服务器是Subject。问题是客户端已经通过中间层对服务器进行了引用。这意味着我不能让服务器拥有对客户机的引用(同样是通过中间层),因为这样我就有了循环依赖关系 我如何解决这个问题?我读到的一个想法是使用这样的中介: 服务器->中介 客

我正在从事一个涉及服务器和一些客户端的多层项目

大多数消息由客户端发起并发送到服务器,这意味着它们看起来如下所示: 客户端->中间层->服务器

但有些消息是服务器启动的更新,这意味着它们是反向的。 所以我需要实现Observer模式,其中客户端是Observer,服务器是Subject。问题是客户端已经通过中间层对服务器进行了引用。这意味着我不能让服务器拥有对客户机的引用(同样是通过中间层),因为这样我就有了循环依赖关系

我如何解决这个问题?我读到的一个想法是使用这样的中介: 服务器->中介 客户->调解人


但我不明白如何让它起作用

为什么客户端依赖于服务器而不是中间层?对不起,我不清楚-客户端依赖于中间层,但它仍然“知道”因为中间层依赖于
主题中的服务器,所以服务器不依赖于
ConcreteObserver
(在您的情况下,
客户机
)只依赖于
Observer
接口。@ChrisDrew非常感谢,这基本上解决了我的问题:)