gpt4 book ai didi

c# - 工厂模式与我的无能。帮我看看光

转载 作者:行者123 更新时间:2023-11-30 15:26:54 25 4
gpt4 key购买 nike

让我们保持简单......

class Client  
abstract class AbstractBusinessObject
class BusinessObject
class BusinessObjectFactory
  1. 好的,所以您的 Client 需要对 AbstractBusinessObject 执行一些操作。显然在某处需要创建一个 BusinessObject 实例。为什么不在客户端?有什么危害?

  2. 假设您说服我在我的 BusinessObjectFactory 中创建新的 BusinessObjects。伟大的。现在工厂必须承担繁重的工作。假设我的工厂有一个 Create(DataRow row) 方法,因为我的 BusinessObject 需要 DataRow 从中提取有用的信息。
    我的 BusinessObject 的 属性是 {get;私有(private)集;。因此,我无法在我的工厂中分配任何属性值。可能我无论如何都不应该。然而,这意味着我必须完全传递 DataRow。所以基本上工厂只是传递我的参数。工厂在这里有什么用?

  3. 好的,所以我可能有不同的 BusinessObject 实现 - 每个都有不同的构造函数。我想工厂知道如何构造任何特定的 BusinessObject 是有意义的。但是话又说回来,我需要一个特定的工厂来获取特定的 BusinessObject。至少我看到的所有例子都表明了这一点。 ConcreteFactoryB 创建ConcreteProductB (ConcreteFactoryA 创建ConcreteProductA)客户端如何知道如何构建工厂?甚至创建哪一个?

  4. 啊,工厂被注入(inject)了……合成根。正确的。但我也可以直接注入(inject) BusinessObject。

  5. 例子在 DoFactory我想让它更清楚一点。这一切都是为了确保 Lion 不吃 Bisons 吗? 不以牛羚 为食?如果这就是工厂试图确保我不需要的全部,如果我只想创建一个对象,对吗?

this one here 这样的工厂也是如此有什么意义吗?如果我只有 一个 Create() 方法,它只生成一种类型的类,那么工厂还有意义吗?

真的,我读了很多。每个例子看起来都像另一个。我错过了重点 :( 谁能提供一个非常清晰的现实世界示例?

https://stackoverflow.com/a/2280289/1407618
去过那里,做过那个......

最佳答案

你是一个使用 AbstractComputerPerson。您不必关心计算机的构造,只要它具有 AbstractComputer 所具有的所有基本功能即可。现在,为了使用计算机,您会自己 Create() 还是从 ComputerStoreComputerProvider 获取它?这些将为您提供最适合您需求(即您的预算、技能、屏幕尺寸)的计算机。他们的 AbstractComputer 来自 ComputerFactory,它知道如何最好地创建它们。

至于您的AbstractComputer 的属性,有些可以交换Storage,有些则不能。这真的取决于你的背景。但是为了让您的工厂将它们放入计算机中,如果它们在构造后不可交换,则它们需要一个入口点(构造函数)。

重要的一点是 AbstractComputer 没有责任知道如何根据给定的片段构造自己。 消费者也没有责任知道它需要哪种计算机(他们有时可以,如果他们有足够的知识并且他们的需求永远不会改变)。

关于c# - 工厂模式与我的无能。帮我看看光,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28353317/

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