一个奇怪的.net概念,我们不能使用观察者模式或委托



我参加过一次面试,面试官问了一个我没能回答的问题。问题是我有五个类A,B,C,D,E。要求是如果 A 更改 C 和 D 应反映相同的更改,但 A 不知道谁是 C 和 D,反之亦然。同样的方式,如果B改变E也应该改变,但他们彼此不认识。我从观察者模式开始,但他不同意,他告诉发件人和收件人应该知道。然后我从代表们开始,他也告诉他们应该互相认识,我没有回答,最后忘了问他的答案:)

有人对这个问题有任何想法吗?

您正在寻找称为发布-订阅模式的中介器模式的变体。 基本上,您将引入一个新的类M,您的所有类(AE)都必须知道。 然后,您的每个类都可以告诉M他们有兴趣消费/生产哪些事件,M会将事件适当地路由到每个类。

如果不了解更多的实际要求,很难回答这个问题。一种方法是使用某种消息传递系统,其中一个类将推送其他类可以响应的消息(共享对象)。

其中一个实现是 NServiceBus 和消息队列。

这个问题的另一种观点可能是,如果你所有的类都实现接口,你就是从契约中抽象实现,这意味着这些类彼此之间没有直接的知识。他们只知道每个类的契约(promise),但实现者可能是任意的/改变的。

我的直接想法是 MVVM 说 A 是视图,视图已更新。虽然DataBinding它更新了ViewModel(可能是C),反过来C可以更新D的源代码,反之亦然D->C->A。 我就是这样理解这个问题的。

相关内容

最新更新