考虑以下一般程序结构:
关于C级回到A级的实例有哪些设计模式?
一个选项是A类订阅的C类发布通知的实例。另一个选择是将一个引用传递给A类“沿着链”(从A到B,然后从B到每个C)。后一种选择允许C的实例直接与A对话。
答案 0 :(得分:3)
如果你的意思是设计模式(即GoF品种),那么这些将是一些相关选项:
C
项(直接或间接通过B),这样当他们想要回到A
时,他们可以简单地调用这个回调 - 甚至可以有参数B
将其聚合集合的视图直接公开给A
;然后直接在A
和C
之间进行通信A
和C
可能订阅的通知;通过发布活动来完成沟通另一方面,如果你的意思是架构模式,那么典型的选择是:
A
订阅C
个活动。乍一看这看起来并不像一个全面的好主意,除非事件一直非常有用,因为它需要n
个对象将指针聚合回回调,在最坏的情况下它们甚至可以只使用一次。A
的引用是另一种选择,但如果您要使用方法污染A
的公共接口,以便C
可以回调它,则不是一个好选择在非常具体的情况下。如果A
已公开合适的接口,则可能非常有效,但请注意,您可能需要C
之间的适配器类回调A
以便不紧密耦合{{1}转到C
的界面。A
直接迭代A
提供的集合(视图)并向B
个实例提供回调;这样做的优点是耦合松散,并且使用的内存最少,但编码可能有点棘手。