【发布时间】:2016-04-23 14:15:15
【问题描述】:
我正在做博士研究,在一次讨论中我提到在 OOP 中,两个对象可能会递归地相互调用。然后我的朋友问我是否有这样的例子,这种情况发生在更真实的例子(不是人造的例子)中。
我想不出一个。
不显示构造函数的人工示例的伪代码:
class A
private B b;
void a1() { b.b1(); }
void a2() { print “finished”; }
class B
private A a;
void b1() { a.a2(); }
方法线性化是:
A.a1() ----> B.b1() ----> A.a2()
有没有更真实的例子可以调用两个不同对象的方法?
【问题讨论】:
-
我认为这将是一个糟糕的设计......应该是 A.a1()--> B.b1() A.a1()-->A.a2()跨度>
-
请原谅我的评论,如果它没有出现,但递归不是从自身内部调用方法吗?在此示例中,您只需依次调用 a1() ---> b1() ---> a2() 输出:完成。
-
你是说双重调度和访客模式吗?
-
看一些网络示例。令牌环将有对象相互调用。由于只有一个令牌,因此不会存在冲突。一个
-
@IoannisStefanou 有递归和相互递归。两个(或三个或 n 个)相互调用的方法是相互递归的。在这种情况下,它们是不同的方法。
标签: java c# oop smalltalk pharo