一种创建型设计模式。特点:在工厂方法模式拥有的特点下,适合需要管理多个相互依赖的产品系列时使用。
优缺点参考工厂方法模式。
适用场景(包括了工厂方法模式适用场景):
以及适合需要生产多种相互依赖的系列产品。
示例:
/// <summary> /// 动物接口 /// </summary> public interface IAnimal { void Speak(); }
/// <summary> /// 玩具接口 /// </summary> public interface IToy { void Play(); }
/// <summary> /// 动物实现类 /// </summary> public class Dog1 : IAnimal { public void Speak() { Debug.Log("汪汪汪"); } }
public class Cat1 : IAnimal { public void Speak() { Debug.Log("喵喵喵"); } }
/// <summary> /// 玩具实现类 /// </summary> public class DogToy : IToy { public void Play() { Debug.Log("和小狗玩具玩"); } } public class CatToy : IToy { public void Play() { Debug.Log("和小猫玩具玩"); } }
/// <summary> /// 抽象的工厂接口类 /// </summary> public interface IAnimalFactory { IAnimal CreateAnimal(); IToy CreateToy(); }
/// <summary> /// 小狗工厂实现类 /// </summary> public class DogFactory : IAnimalFactory { public IAnima CreateAnimal() { return new Dog(); } public IToy CreateToy() { return new DogToy(); } }
/// <summary> /// 小猫工厂实现类 /// </summary> public class CatFactory : IAnimalFactory { public IAnimal CreateAnimal() { return new Cat(); } public IToy CreateToy() { return new CatToy(); } }
/// <summary> /// 客户端 /// </summary> public class Client { public static void Main(string[] args) { IAnimalFactory dogFactory = new DogFactory(); IAnimal dog = dogFactory.CreateAnimal(); IToy dogToy = dogFactory.CreateToy(); dog.Speak(); dogToy.Play(); IAnimalFactory catFactory = new CatFactory(); IAnimal cat = catFactory.CreateAnimal(); IToy catToy = catFactory.CreateToy(); cat.Speak(); cat.Play(); } }