|
|
1
9
将Object2传递给Object1的一个问题是,您在Object2和Object1之间创建了依赖关系。Object1获得所需数据的唯一方法是引用Object2。 现在,有时候你想要,但大多数时候你不想要。因此,最好只将所需的值作为参数传递给方法,而不是传递Object2的实例。 |
|
|
2
3
如果该方法只需要Object2中的一个属性值,那么最好直接传递该属性值。如果该方法需要访问Object2的许多属性或其他功能,则将引用传递给Object2是合适的。 也有例外-如果您需要保护方法的签名(即它是公共的),并且您预计将来会在方法中额外使用Object2,那么传递对象引用可能是合适的。 前面的答案也给出了有效的点——当你做出这个决定时,你应该考虑Objt1和Objon 2的耦合。 |
|
|
3
2
通常目标是最小化对象之间的耦合。 让我们用一个简单的例子,我有三个对象;AppController,它保存对DataController和MainWindowController的引用。您需要将DataController.Data传递给MainWindowController,以便在主窗口的表中显示值。您可以将DataController作为方法参数传递给MainWindowController,或者将DataController作为MainWindowController中的实例变量。为了最大限度地减少耦合,最干净的方法是AppController直接将数据传递给MainWindowController,因此它不需要了解任何有关DataController的信息。 |
|
|
4
1
关键在于Object1是否知道Object2。在OOP中,良好设计的一部分是让对象存储尽可能少的信息,以使它们仍能正常工作。所以问题从根本上归结为:Object1是否需要知道Object2的存在(也就是说,它是否存在 Object2的实例是否存在)或者是否可以 告诉 类型 在Object2上的财产的所有权;这样,就可以解耦Object1和Object2,因为Object1没有 反对2以特定方式提供特定财产;调用代码可以连接两者。 |
|
|
5
1
是的,伦道夫说的是真的。 请记住,使用OOP,您的目标是创建单独的标识,这些标识可以作为一个整体在系统中运行。当您开始创建彼此严重依赖的对象时,不仅会增加出现bug的机会,还会增加程序根本无法工作的机会。 现在,您的示例是一个次要的示例,但是想象一下5个、10个、100个对象通过参数相互调用,这是一项令人讨厌的工作。 |
|
|
6
1
|
|
|
simply lemon · python上链表的添加方法 1 年前 |
|
|
Anonymous · 为什么在这个例子中self和类名的用法不同? 1 年前 |
|
|
P N Singh · 在CPP Oops中调用对象而不创建它 1 年前 |
|
|
Muthuraj · 如何创建一个通用工厂来创建某种类型的实例[重复] 1 年前 |
|
|
Andy Votava · 从父类定义调用学生方法 1 年前 |