gpt4 book ai didi

design-patterns - 可以用工厂代替单例吗?

转载 作者:行者123 更新时间:2023-12-04 16:25:13 25 4
gpt4 key购买 nike

已经有很多关于 Singleton-Pattern 的帖子了,但是我想开始另一个关于这个主题的帖子,因为我想知道 Factory-Pattern 是否是删除这种“反模式”的正确方法。

过去我用过很多单例,我的同事也用过,因为它很容易使用。例如,Eclipse IDE 或更好的工作台模型也大量使用了单例。正是由于一些关于 E4(下一个大的 Eclipse 版本)的帖子让我开始重新思考单例。

底线是由于这个单例,Eclipse 3.x 中的依赖项是紧密耦合的。

让我们假设我想完全摆脱所有单例,而是使用工厂。
我的想法如下:

  • 隐藏复杂性
  • 少耦合
  • 我可以控制多少
    创建实例(只需存储
    引用我的私有(private)领域
    工厂)
  • 模拟工厂进行测试(使用依赖注入(inject))
    当它在接口(interface)后面时
  • 在某些情况下,工厂可以制造
    不止一个单例过时
    (取决于业务
    逻辑/组件组成)

  • 这有意义吗?
    如果不是,请给出你这么认为的充分理由。另一种解决方案也是值得赞赏的。

    谢谢

    马克

    最佳答案

    在我看来,单例的主要缺点是紧耦合(及其所有后果,例如糟糕的测试等)。

    工厂模式允许更松散的耦合度,所以是的:用工厂替换单例听起来是个好主意。

    Peter Kelly提到,工厂有时也可能最终成为单例。但是,工厂至少不会返回自己的实例,而是返回某个接口(interface)实现的实例,这是一个巨大的优势。

    关于design-patterns - 可以用工厂代替单例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2764712/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com