抽象工厂属于创建型设计模式,
抽象工厂能够生产一系列相对固定的产品簇产品,要扩展一个工厂相对容易,如果要扩展一个产品簇中的产品数量,就要全部的工厂都要扩展,就相对麻烦
抽象工厂:工厂+约束
/// 创建产品簇,多个对象是个整体,不可分割
抽象的工厂类
1 /// <summary> 2 /// 一个工厂负责一些产品的创建 3 /// 产品簇 4 /// 单一职责就是创建完整的产品簇 5 /// 6 /// 继承抽象类后,必须显式的override父类的抽象方法 7 /// </summary> 8 public abstract class FactoryAbstract 9 { 10 public abstract IRace CreateRace(); 11 public abstract IArmy CreateArmy(); 12 public abstract IHero CreateHero(); 13 public abstract IResource CreateResource(); 14 15 //public abstract ILuck CreateLuck(); 16 }
各实现类
1 /// <summary> 2 /// 一个工厂负责一些产品的创建 3 /// </summary> 4 public class HumanFactory : FactoryAbstract 5 { 6 public override IRace CreateRace() 7 { 8 return new Human(); 9 } 10 11 public override IArmy CreateArmy() 12 { 13 return new HumanArmy(); 14 } 15 public override IHero CreateHero() 16 { 17 return new HumanHero(); 18 } 19 public override IResource CreateResource() 20 { 21 return new HumanResource(); 22 } 23 }
1 /// <summary> 2 /// 一个工厂负责一些产品的创建 3 /// </summary> 4 public class ORCFactory : FactoryAbstract 5 { 6 public override IRace CreateRace() 7 { 8 return new ORC(); 9 } 10 11 public override IArmy CreateArmy() 12 { 13 return new ORCArmy(); 14 } 15 public override IHero CreateHero() 16 { 17 return new ORCHero(); 18 } 19 public override IResource CreateResource() 20 { 21 return new ORCResource(); 22 } 23 }