【问题标题】:Loose coupling and class creation松散耦合和类创建
【发布时间】:2013-11-05 16:21:02
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: oop


    【解决方案1】:

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

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

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

    希望这会有所帮助。

    【讨论】:

    • 感谢 Markus,我目前正在使用服务定位器模式。
    • 服务定位器是一种反模式,除非您正在编写框架。
    猜你喜欢
    • 2016-12-04
    • 2017-06-05
    • 1970-01-01
    • 2011-01-20
    • 2020-10-26
    • 2011-02-22
    • 1970-01-01
    • 2017-05-09
    • 2010-10-22
    相关资源
    最近更新 更多