- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
让我们保持简单......
class Client
abstract class AbstractBusinessObject
class BusinessObject
class BusinessObjectFactory
好的,所以您的 Client
需要对 AbstractBusinessObject
执行一些操作。显然在某处需要创建一个 BusinessObject
实例。为什么不在客户端?有什么危害?
假设您说服我在我的 BusinessObjectFactory
中创建新的 BusinessObjects
。伟大的。现在工厂必须承担繁重的工作。假设我的工厂有一个 Create(DataRow row)
方法,因为我的 BusinessObject
需要 DataRow 从中提取有用的信息。
我的 BusinessObject 的
属性是 {get;私有(private)集;
。因此,我无法在我的工厂中分配任何属性值。可能我无论如何都不应该。然而,这意味着我必须完全传递 DataRow
。所以基本上工厂只是传递我的参数。工厂在这里有什么用?
好的,所以我可能有不同的 BusinessObject
实现 - 每个都有不同的构造函数。我想工厂知道如何构造任何特定的 BusinessObject
是有意义的。但是话又说回来,我需要一个特定的工厂来获取特定的 BusinessObject
。至少我看到的所有例子都表明了这一点。 ConcreteFactoryB
创建ConcreteProductB
(ConcreteFactoryA
创建ConcreteProductA
)客户端如何知道如何构建工厂?甚至创建哪一个?
啊,工厂被注入(inject)了……合成根。正确的。但我也可以直接注入(inject) BusinessObject。
例子在 DoFactory我想让它更清楚一点。这一切都是为了确保 Lion
不吃 Bisons
吗? 狼
不以牛羚
为食?如果这就是工厂试图确保我不需要的全部,如果我只想创建一个对象,对吗?
像this one here 这样的工厂也是如此有什么意义吗?如果我只有 一个 Create()
方法,它只生成一种类型的类,那么工厂还有意义吗?
真的,我读了很多。每个例子看起来都像另一个。我错过了重点 :( 谁能提供一个非常清晰的现实世界示例?
https://stackoverflow.com/a/2280289/1407618
去过那里,做过那个......
最佳答案
你是一个使用 AbstractComputer
的 Person
。您不必关心计算机的构造,只要它具有 AbstractComputer
所具有的所有基本功能即可。现在,为了使用计算机,您会自己 Create()
还是从 ComputerStore
或 ComputerProvider
获取它?这些将为您提供最适合您需求(即您的预算、技能、屏幕尺寸)的计算机。他们的 AbstractComputer
来自 ComputerFactory
,它知道如何最好地创建
它们。
至于您的AbstractComputer
的属性,有些可以交换Storage
,有些则不能。这真的取决于你的背景。但是为了让您的工厂将它们放入计算机中,如果它们在构造后不可交换,则它们需要一个入口点(构造函数)。
重要的一点是 AbstractComputer
没有责任知道如何根据给定的片段构造自己。 消费者
也没有责任知道它需要哪种计算机(他们有时可以,如果他们有足够的知识并且他们的需求永远不会改变)。
关于c# - 工厂模式与我的无能。帮我看看光,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28353317/
#include int main () { char name[20]; printf("Type your name please: "); fgets(name,20,
我有一个使用 new Regex(string pattern) 构造函数创建的 Regex 对象,之后有没有办法查看创建该 regex 对象的模式? 我似乎无法访问 Regex 或 RegexOpt
我从 C 开始,我必须检查 main 函数的参数是否为 double。我正在尝试使用 strtod,但它给我带来了一些麻烦。所以我的主要看起来像这样: int main (int argc,
假设我有: 如何检查 $('.outer') 是否有一个 div,其中包含名为“bar”的类? 最佳答案 使用:has选择器。 $('.outer:has(.bar)') jsFiddle .
花点时间看看这个 fiddle 。此处,Container1 和 Container2 具有背景色:#ccc 和 h1,而 .logo div 具有边距。左右边距工作正常。为什么 Margin-Top
试试这个: template class Base { public: int someBaseMember;
在我获取远程数据 (git-fetch) 之后,git 足够友好地告诉我每个分支上的 SHA,old..new,但是如果我在控制台工作了很多,我可能会失去它们。 如何再次显示它们? 当然我可以将输出保
我在 Wordpress 平台上构建了一个带有水平菜单的网站。 在 ie 9+ 和 firefox 中查看时似乎没问题,但在 ie8- 上菜单 css 类似乎不正确。 我正在使用 firebug 努力
是否可以查看该类型实现了哪些类型类?像这样的东西: >:typeclasses Int [Num, etc...] 最佳答案 使用:info命令。 Prelude> :info Int data In
我正在使用Windows功能CreateToolhelp32snapshot枚举我的机器上正在运行的进程。 pe32.szeFileName它返回的字段是 WCHAR ,这是可执行文件的名称。 我想将
我编写了一个函数,它接受一些参数,并在函数内部使用一个类,该类具有来自第三方库的函数,该函数返回一个 promise ,并且我在自己的函数中返回该 promise 的结果。像: return clie
在 R 中,可以指定一个公式: F <- as.formula('X ~ 1') 我正在尝试想出一种方法来测试上面的 F 是否仅包含截取,即 ~1。我试图使用 grepl 无济于事。有没有办法确定上面
我是一名优秀的程序员,十分优秀!