子窗口调用父窗口的方法或者使用父窗口的成员变量

我们在开发中,常常会遇到在子窗口调用父窗口的方法或者使用父窗口的成员变量的情况。
对于子窗口使用父窗口的变量,我能想到的方法有:
(1)构造函数里面增加参数,构造的时候直接把需要用到的变量传进去;
(2)父窗口提供接口函数,在子窗口调用父窗口的函数,去获取变量值。
这两种那种更好?对于软件工程以及软件设计模式的开闭原则、低耦合高内聚来说,哪种更合理?或者是不是有更好的办法?

然后是子窗口调用父窗口的函数:
(1)构造函数中,直接将父窗口的指针(句柄)传入,需要时,可以通过指针直接调用;
(2)子窗口提供设置回调函数的接口,父窗口提前调用接口设置好回调函数,待需要调用的时候,直接调用这个回调函数;
(3)发送消息,利用消息机制。比如MFC的消息机制,Qt的信号与槽等等。
总感觉消息机制,是最合理的,但是消息机制,比较麻烦,要写的地方比较多,而通过指针调用的方式,更加方便,不过总感觉这种方式不太好,会不会破坏程序的开闭原则、低耦合高内聚等等。我分析不出来,希望有大神,可以指点一二。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问

相似问题

0
php threads扩展 run()方法 以及 run方法调用的方法 使用全局变量
1
AndroidJNI如何在线程中调用java的非静态方法
0
.net 多次调用字典查询结果table 有比使用全局变量更好的方法吗
1
link中能否闭包调用成员变量?还是只能调用函数变量?
2
link中发射调用的函数和直接调用的函数,创建的变量都是可移动的还是静止的?
1
link中发射调用函数的变量,在内存中究竟是怎么存放的?是静止不变的么?
4
小弟请教在MFC中子窗口如何获取父窗口的句柄啊
4
JAVA中子类覆盖了父类的方法,是否还有办法通过子类调用父类同一方法?
1
link中可以通过代码发射去调用let中定义的变量么?怎么实现?
1
link环境下,如何获得一个变量的变量名?如何用变量名调用变量?
1
Qt 关于调用父类的paintEvent问题
6
C#新手,新建窗口如果调用原有窗口的数据
4
JAVA 子类方法都可以使用super吗
6
MFC父窗口控制子窗口CListCtrl控件刷新的问题
3
基类指针指向子类对象,调用的成员函数和成员变量是基类的还是子类的?
7
java子类构造方法的问题--必须要先调用父类的构造方法么?
2
动态链接库中类对象的成员变量,修改后为什么再次调用链接库函数时,变量再次变为初始化值?
2
子窗口的创建与销毁问题
1
oc 类的继承的实质,以及是怎样调用方法 和函数的
6
C#中有没有办法做到类的成员方法只对特定对象公开?或者用其他机制来实现成员方法只能被特定对象调用