1

我浏览了许多关于 OOP 原则的教程和博客。当我了解松散耦合和编写可测试类时,我犹豫了一件事。

假设我有一个 Lake 课程。Lake 类具有注入的依赖项,例如天气和位置(策略模式等),但它创建了返回的类,比如鱼。

所以函数 catch() 返回 Fish 类。

是否紧密耦合,因为鱼类有一个也需要“单元测试”的构造函数?

4

1 回答 1

3

如果您直接在类中实例化 Fish 对象,例如 new Fish(); 那么这两个类之间存在紧密耦合。如果 Fish 不仅仅是一个简单的数据传输对象(一个只携带数据而几乎没有逻辑的对象),那么我会避免这种紧密耦合。
有几种方法可以解决这个问题,例如:

  1. 将一个抽象工厂注入到创建鱼的湖中。因此,您可以替换创建过程。
  2. 使用控制容器的反转并要求它为您创建一条鱼。你可以把这样的容器想象成一个可配置的工厂。服务定位器模式是一种在这种情况下可以派上用场的方法。

但是,如果 Fish 只是一个简单的 DTO,那么在复杂性、可读性和性能方面是否值得付出努力是值得怀疑的。

希望这可以帮助。

于 2013-11-05T16:39:32.397 回答