处理依赖关系

Dealing with dependencies

将所需的依赖项传递给需要它们的方法而不是将所有依赖项传递给对象构造函数被认为是一种好的做法吗?假设我有一个需要绘制的对象。将渲染器传递给该对象的 draw() 方法是个好主意,还是我应该首先将渲染器传递给该对象的构造函数?

您指的是 flyweight pattern,我相信当您的应用程序需要创建大量性质几乎相似的对象时应该使用它。

主要使用两个术语:Intrinsic StateExtrinsic state

内在状态内在状态是可以在 class 成员之间共享的状态。

外在状态- 外在状态是变化的,不能在 class 成员之间共享。

捕获外部参数作为方法参数而不是使其成为实例成员的模式被称为Flyweight pattern

有关轻量级的更多详细信息,您可以访问这篇文章here

何时考虑使用享元模式。

1.需要创建大量对象,需要降低内存消耗。

2。您的 class 设计

中存在外部状态成员

最好反转需要绘制的对象和渲染器对象之间的依赖关系,因为渲染器对象可能包含方法 Draw,其参数表示需要绘制的对象。

如果我们从示例中抽象出来,那么在方法中提供特定于操作的参数是完全合法的。

您可以使用一条规则 - 如果 class 实例在没有依赖项的情况下毫无用处, 即依赖项是 "must have" / 强制性的,它们应该传递给构造函数

想法是在调用构造函数后应完全(尽可能)初始化对象。毕竟这就是构造函数的用途,即初始化。

因此应该使用 setter 设置可选依赖项。