解决方案 »

  1.   

    参考Mediator模式,通过一个中间层进行通讯。
      

  2.   

    直接调用B,C,D对象的方法或属性不可以?
      

  3.   

    我感觉c很强大,java写窗体,不建议。但是你既然用到了,就给你说一下。
    A控件的事件需要改变B、C、D等控件的状态或动作。可以做到的,可以根据控件的id,改变B、C、D的状态,或者触发B、C、D的事件

      

  4.   

    都是对象,对象间的关系包括组合、并列等。
    组织好它们的关系是关键,然后保证它们之间的正常通信。
    无论C++,Java,一样的
      

  5.   

    如果是一个复杂或者大型的程序,不推荐直接调用对方。
    方案:组件间用通知中心通讯
    1. 组件在通知中心注册感兴趣的事件。
    2. 组件的状态改变后告知通知中心你的状态已经改变及改变后的数据
    3. 通知中心查找对此事件感兴趣的组件,然后调用它的方法。这个就是Mediator模式和观察者模式的应用,很多框架里都是这么做的,可以参考Cocoa编程的NSNotificationCenter的机制也是这么做的。