• 1. 第四章 抽象工厂模式
  • 2. 工厂方法模式的原理 工厂方法模式,有什么优缺点? 回顾
  • 3. 创建模式 工厂模式(Factory) 简单工厂模式(Simple Factory) 工厂方法模式(Factory Method) 抽象工厂模式(Abstract Factory) 建造者模式(Builder) 原型模式(Prototype) 单例模式(Singleton) 本章任务
  • 4. 抽象工厂模式——引子 XX同学在买车的过程中,突然改变主意,想多了解点其他品牌的车子?请各位同学给这位同学出出主意,如何方便的让这位同学买到心仪的车呢? 用程序来演示整个买车过程。
  • 5. 抽象工厂模式——定义定义 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类 别名 Kit模式
  • 6. 抽象工厂模式——结构图
  • 7. 抽象工厂模式——原理抽象工厂 实体工厂2实体工厂1抽象产品A抽象产品B实体产品B1实体产品B2实体产品A1实体产品A2客户
  • 8. 抽象工厂模式——参与者参与者 抽象工厂(Abstract Factory) 声明生成抽象产品的方法。 具体工厂(Concrete Factory) 执行生成抽象产品的方法,生成一个具体的产品。 抽象产品(Abstract Product) 为一种产品声明接口。 具体产品(Product) 定义具体工厂生成的具体产品的对象,实现产品接口。 客户(Client) 我们的应用程序,使用抽象产品和抽象工厂生成对象
  • 9. 抽象工厂模式——应用abstract class AbstractFactory { public static AbstractFactory CreateFactory(string type) { AbstractFactory factory = null; switch (type) { case "Bmw": factory = new BmwFactory(); break; case "Audi": factory = new AudiFactory(); break; } return factory; } public abstract AbstractSportsCar CreateSportsCar(); public abstract AbstractBussinessCar CreateBussinessCar(); }抽象工厂简单工厂模式
  • 10. 抽象工厂模式——应用class BmwFactory : AbstractFactory { public override AbstractSportsCar CreateSportsCar() { return new Bmw.BmwSportsCar(); } public override AbstractBussinessCar CreateBussinessCar() { return new Bmw.BmwBussinessCar(); } }具体工厂
  • 11. 抽象工厂模式——应用abstract class AbstractSportsCar { }抽象产品class BmwSportsCar : AbstractSportsCar { public BmwSportsCar() { Console.WriteLine("宝马中的跑车"); } }具体产品
  • 12. 抽象工厂模式——应用class Client { public void Buy() { AbstractFactory factory = AbstractFactory.CreateFactory("Bmw"); factory.CreateSportsCar(); } }客户客户请求 抽象工厂抽象产品
  • 13. 抽象工厂模式与反射using System.Reflection; Assembly.Load(“程序集名”).CreateInstance(“命名空间. 类名称");
  • 14. 抽象工厂模式——优缺点优缺点 优点 隔离了具体类的生成,使得客户不需要知道什么被创建了。 当一个产品族中的多个对象被设计成一起工作时,它能够保证客户端始终只使用同一个产品族中的对象。 缺点 添加新的产品对象时,难以扩展抽象工厂以便生产新种类的产品。
  • 15. 抽象工厂模式——适用性适用性 系统需要屏蔽有关对象如何创建,如何组织和如何表示 系统需要由关联的对象来构成 有关联的多个对象需要一起应用并且它们的约束是强迫的(不可分离) 你想提供一组对象而不显示它们的实现过程,只显示它们的接口
  • 16. 总结简单描述下,什么是抽象工厂模式? 抽象工厂模式,有什么优缺点?
  • 17. 谢谢!