Define an interface for creating an object, but let subclass decide which class to instantiate. Factory mothed lets class defer instantiation to subclass.
Factory Method模式的几个要点
• Factory Method模式主要用于隔离类对象的使用
者和具体类型之间的耦合关系。面对一个经常变
化的具体类型,紧耦合关系会导致软件的脆弱。
• Factory Method模式通过面向对象的手法,将所
要创建的具体对象工作延迟到子类,从而实现一
种扩展(而非更改)的策略,较好地解决了这种紧耦合关系。
• Factory Method模式解决“单个对象”的需求变化,
Abstract Factory 模式解决“系列对象”的需求变
化,Builder模式解决“对象部分”的需求变化。
工厂方法创建一个对象。
1
public interface IMaker
2 {
3 Product FactoryMethod();
4 }
5
6 public class Maker: IMaker
7 {
8 public Product FactoryMethod()
9 {
10 return new ConcreteProduct();
11 }
12 }
13
14 public abstract class Product
15 {
16 //
17 }
18
19 public class ConcreteProduct : Product
20 {
21 //
22 }
2 {
3 Product FactoryMethod();
4 }
5
6 public class Maker: IMaker
7 {
8 public Product FactoryMethod()
9 {
10 return new ConcreteProduct();
11 }
12 }
13
14 public abstract class Product
15 {
16 //
17 }
18
19 public class ConcreteProduct : Product
20 {
21 //
22 }
public abstract class Creator
{
public abstract Product FactoryMethod();
}
public class RealCreator : Creator
{
public override Product FactoryMethod()
{
return new ConcreteProduct();
}
}
http://www.dofactory.com/Patterns/PatternFactory.aspx