OOP - 将大型控制器对象传递给子级或让子级调度事件更好吗?

时间:2015-10-15 05:10:51

标签: oop events structure

我是一位经验丰富的程序员,但我一直在努力解决这个问题。 您的主类可能会显示其他所有内容的弹出窗口,屏幕之间的转换等等,然后您将拥有屏幕对象本身以及弹出对象。当你点击"关闭"在弹出窗口中,或点击"转到新屏幕"在屏幕上,或者它可能是什么,这些对象然后需要与主类通信并告诉它做什么。通常你需要将数据传递给主类。根据您的经验,让孩子们使用数据调度事件,主类提取或以某种方式通过构造函数将主类传递给所有子类,并在主类中有一堆公共方法,这样做会更好。孩子们可以打电话吗? 或两者都同等有效?

编辑:而且,是什么让我发布了这个:在我的游戏中,用户通过一堆不同的菜单屏幕,并在每个屏幕中,他添加了一些游戏配置对象,最后将使用生成gameScreen。我不想继续说dispatchEvent(" addValueToGameConfig",value)或其他什么,我只想说bigController.gameConfig.value ="无论&#34 ;;

1 个答案:

答案 0 :(得分:0)

如果孩子的等级很深,我会选择活动或观察者。它导致类之间的耦合较低。你的主要课程的任何实质性重构都会对受抚养的孩子产生巨大的雪崩影响。他们对他们的父母变得过于知识渊博(违反了德米特法则的更高变化)并且除了管理他们自己的状态之外,有效地承担了额外的责任(可以说是打破了SRP),以与他们的父母相容的自定义方式不断地告知它们自己的状态。将有关其状态变化的专门有意义的通知发送到" space",而不仅仅是关于任意属性更改,使他们免于担心父母的状态。现在,父母有责任了解其子女状况的变化。此外,拥有一系列有意义的事件可能会导致儿童的公共界面变窄。它也有助于提高可读性,而不必经常在层次结构中上下。