松散耦合和类创建

时间:2013-11-05 16:21:03

标签: oop

我通过许多有关OOP原则的教程和博客。 正如我理解松散耦合和编写可测试类,我有一点犹豫。

假设我有一个湖级课程。 湖类有依赖注入天气和位置(策略模式等),但它创建了返回的类,让我们说鱼。

因此函数catch()返回Fish类。

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

1 个答案:

答案 0 :(得分:3)

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

  1. abstract factory注入创造鱼类的湖中。所以你可以替换创建过程。
  2. 使用控制容器的反转并让它为您创建一条鱼。您可以将此类容器视为可配置工厂。在这种情况下,Service Locator pattern是一种方便的方法。
  3. 但是,如果Fish只是一个简单的DTO,那么在复杂性,可读性和性能方面是否值得付出是值得怀疑的。

    希望这有帮助。