10

我仍在尝试了解循环引用的危险。我经常读到它们只应在极少数情况下使用。但是,在规范的状态模式中,“状态”对象需要引用“上下文”对象才能引起转换,“上下文”对象需要引用“状态”对象才能触发它们的行为。

这不是循环引用吗?如果不是,它与循环引用有何关系?如果是这样,为什么这是可以接受的?

http://en.wikipedia.org/wiki/State_pattern

http://sourcemaking.com/design_patterns/state

4

1 回答 1

8

两个对象可以相互操作,而不必相互引用。一般来说,循环引用是指 A 类和 B 类都有一个成员变量引用另一个的情况。正如 Wikipedia 文章中所实现的那样,没有循环引用,因为虽然 Context 存储了对 State 的引用,但 Context 作为方法的参数传递到 State,当方法在没有 State 的情况下完成执行时,它超出了范围存储了对它的引用。

于 2012-07-22T06:16:13.623 回答