日期:2014-05-20  浏览次数:21158 次

两个类之间的相互调用
假如有两个类A和B,在类A中调用类B的对象,同时在类B中也调用类A的对象。请问这样的设计方法的优劣?总觉得这种方法很不妥,但是不明白原因。

------解决方案--------------------
可能出现无限循环的调用,最终出现堆栈溢出的异常。
------解决方案--------------------
容易产生死循环
------解决方案--------------------
设计好就ok了,a调用b执行方法,得到结果b在取
------解决方案--------------------
最好不要这样子,这也是.net的dll不能互相引用的原因,容易出错。
------解决方案--------------------
两个方法直接没关联关系的话不可能出现死循环
------解决方案--------------------

我擦 无止境的链式结构么?

看来你少个中间件啊。
------解决方案--------------------
在其中一个类中添加事件,改为单向依赖。c#设计不建议双向依赖。或者利用中介者模式,都依赖于第三方类
------解决方案--------------------
设计上应该避免静态的方法、对象(类级别)的互相调用;
如果是非静态的对象、方法(对象级别),这种方式也不是完全不可行。
比如主窗口把自己传递给子窗口Form form = new Form(this)这种方式,
只要不出现死循环是没问题的,只是增加了一些耦合。
设计模式并不是一种绝对的规范,看各种场景灵活的运用。
------解决方案--------------------
这种设计是不可取的,任何一方的变动都将导致不可预料的后果。你应该单独由一个DIRECTOR进行指挥。