我从来没有真正看过工厂模式,今天决定花费时间,并根据这篇文章(http://msdn.microsoft.com/en-us/library/ee817667.aspx)创建一个快速样本,最终让我的头。工厂模式为何如此工作?
源代码完美地安排在三个单独的组件中,整齐地命名为Product,Factory和Client。
工厂模式的主要好处(据我所知)是从“客户”类抽象“产品”类的实例化。因此,在所提供的示例中,产品实例化不会随产品类的任何更改而发生变化,您仍然必须对客户端类进行更改以传递创建更新产品所需的新值。这些数据毕竟必须来自某个地方?
我读过的另一个例子说,一旦一个类被实现并且其他类的负载直接使用它,在这里对“产品”类所做的更改将需要对该类的每个实例进行更改,比如说例如,如果在其构造函数中需要一个新变量。
从我所能理解的情况来看,Factory模式确实可以确保这个类的实例永远不会改变,如果你想将一个新变量传递给产品构造函数,那么你最终不得不将这些新变量传递给更新改为工厂。
因此,这显然不能解决问题,但仅仅移动它并且这样做会增加额外的复杂性。
鉴于这是一种既定的模式,我显然缺少一些东西。因此,这篇文章:请向我解释我缺少的东西。
感谢
这也可能是很好的补充说,工厂模式通常处理相关类型的层次结构的创建,而不仅仅是一个。 – Grozz 2011-01-28 13:09:28