23种设计模式之工厂方法(Factory Method Pattern)
工厂方法
前面我们学习了简单工厂,发现一个问题就是简单工厂集合了矛盾,为了解决这个问题我们针对每一种产品提供一个工厂类。通过不同的工厂实例来创建不同的产品实例。在同一等级结构中,支持增加任意产品这种设计模式就是工厂方法。
优点:允许系统在不修改具体工厂角色的情况下引进新产品
缺点:由于每加一个产品,就需要加一个产品工厂的类,增加了额外的开发量
1 public interface IFactory 2 { 3 IRace CreateRace(); 4 }
1 public class HumanFactory : IFactory 2 { 3 public virtual IRace CreateRace() 4 { 5 return new Human(); 6 } 7 } 8 public class HumanFactoryAdvanced: HumanFactory 9 { 10 public override IRace CreateRace() 11 { 12 Console.WriteLine("123"); 13 return new Human(); 14 } 15 }