gpt4 book ai didi

java - 为什么需要基础抽象工厂抽象工厂模式?

转载 作者:行者123 更新时间:2023-11-30 06:54:49 24 4
gpt4 key购买 nike

在抽象工厂模式中涉及的主要实体是

  1. 抽象基工厂
  2. 具体工厂各自扩展抽象基础工厂
  3. 客户端代码
  4. 基础产品
  5. 扩展基本产品的具体产品类

我看过各种实现并观察到客户端代码了解具体工厂。根据我在不同地方看到的模式的通用定义如下

Defines an interface for creating objects, but let sub-classes to decide which class to instantiate.

根据我的观察,createProduct 是作为抽象工厂方法中的抽象方法实现的。它公开了一个非抽象的公共(public)方法,如 getProduct,从那里调用 createProduct 方法。根据具体工厂类的运行时对象,相应地调用 createProduct

即使基本抽象工厂类不存在,客户端代码也可以简单地在具体工厂类的对象上调用 createProduct 方法,因为具体工厂类对客户端代码可见。

我觉得抽象基类只在下面的情况下有用

如果我们有代码来创建具体 Factory 类的对象,这些代码与调用这些对象上的 getProduct 方法的代码分开。实例化具体工厂类的代码可以将工厂放在某个队列中,稍后可以迭代队列并且可以获得具体产品

请提供您宝贵的意见。

最佳答案

客户不应该了解任何具体的工厂。抽象工厂应该隐藏工厂实现细节,允许在不影响客户端的情况下换入换出不同的工厂。

暗示抽象工厂模式的目的是生产具体工厂的答案是完全错误的。不幸的是,这种错误信息具有欺骗性的直觉,因此不正确的定义在 SO 上泛滥成灾,许多都获得了数百票赞成。

答案 here对 AbstractFactory 给出很好的解释;但要注意暗示重复的评论。链接线程中的答案会破坏对模式的任何理解。

关于java - 为什么需要基础抽象工厂抽象工厂模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35987934/

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