如何降低Form unit间的耦合性?

时间:2022-09-12 14:51:33
在一份DELPHI资料中,看到这样两段话:

“在多Form间,当存在这样的情形:Form1保存了某种数据,然后调用Form2显示该数据,请使用这样的通讯模式:Form1保存该数据到数据库中(可能通过Data Module的方法),然后直接调用Form2的某个方法去显示该数据,Form2的对应方法调用时只允许指定控制性信息(如记录PK),而不允许对Form2的控件属性直接操作。”

“当Form1调用Form2时,不可以直接对Form2中的控件属性进行存取操作,而必须通过相应公开的方法进行。因为从对象的角度来说,Form1无须知道Form2是如何处理这条调用(消息)的,而只需要知道Form2提供了这种调用(消息处理机制)即可。这样实际上也加强了功能和界面的分离,因为这里更加强调功能,而不关系界面的具体控件。”

请大侠指点如何理解并应用这两段话。谢谢。

6 个解决方案

#1


多写些代码自然就明白了,咬书本没什么意义的

#2


和它保持距离,避免发生关系.^_^


//其实,一楼的老大说的很对,这种东东,要做写代码,尽量让Code复用性强.


 。。。。。。。。。。。。。。。。。。。。UP。。。。。

#3


当然,实践出真知。之所以在这里问,就是想知道高手们是如何看待和处理这些问题的,学习学习,少走些弯路。

#4


〉〉,Form1无须知道Form2是如何处理这条调用(消息)的,而只需要知道Form2提供了这种调用(消>>息处理机制)即可。

他的意思可能就是,如果form2要对form1的某些成员变量作修改,不要直接form1.xxx.xxx:=xxxx
而是form1提供一个public的过程供form2调用

比如老师上课对学生说回家帮妈妈做家务,具体家务是什么不用老师管,每个家庭自己决定
form2里面调用 form1.作家务,也可能调用form3.作家务,而作家务在form1或form3里自己定义,可以扫地,可以擦窗等等,也可以今天扫地明天改为擦窗~~~~这个有点像面向对象的多态~~~

#5


和它保持距离,避免发生关系.^_^

#6


这句话真强。

#1


多写些代码自然就明白了,咬书本没什么意义的

#2


和它保持距离,避免发生关系.^_^


//其实,一楼的老大说的很对,这种东东,要做写代码,尽量让Code复用性强.


 。。。。。。。。。。。。。。。。。。。。UP。。。。。

#3


当然,实践出真知。之所以在这里问,就是想知道高手们是如何看待和处理这些问题的,学习学习,少走些弯路。

#4


〉〉,Form1无须知道Form2是如何处理这条调用(消息)的,而只需要知道Form2提供了这种调用(消>>息处理机制)即可。

他的意思可能就是,如果form2要对form1的某些成员变量作修改,不要直接form1.xxx.xxx:=xxxx
而是form1提供一个public的过程供form2调用

比如老师上课对学生说回家帮妈妈做家务,具体家务是什么不用老师管,每个家庭自己决定
form2里面调用 form1.作家务,也可能调用form3.作家务,而作家务在form1或form3里自己定义,可以扫地,可以擦窗等等,也可以今天扫地明天改为擦窗~~~~这个有点像面向对象的多态~~~

#5


和它保持距离,避免发生关系.^_^

#6


这句话真强。