设计模式------抽象工厂模式(AbstractFactoryPattern)

来源:互联网 发布:齐天大圣 知乎 编辑:程序博客网 时间:2024/05/21 06:40

我写过简单工厂模式(SimpleFactoryPattern)和工厂方法模式(FactoryMethodPattern)的对比的博客。现在学到抽象工厂模式(AbstractFactoryMethod)更是让人大开眼界。

先上抽象工厂模式(AbstractFactoryPattern)的UML类图



我认为抽象工厂模式(AbstractFactoryPattern)和工厂方法模式(FactoryMethodPattern)的唯一区别就是FactoryA和FactoryB可以创建多个抽象产品。

下面列出来具体区别:

简单工厂模式:

  • 一个抽象产品类,可以派生出多个抽象产品类;
  • 一个抽象工厂类,可以派生出多个具体工厂类;
  • 每个具体工厂类只能创建一个具体产品类的实例。

抽象工厂模式:

  • 多个抽象产品类,每个抽象产品类可以派生出多个具体产品类;
  • 一个抽象工厂类,可以派生出多个具体工厂类;
  • 每个具体工厂类可以创建多个具体产品类的实例。
区别:
  • 工厂方法模式(FactoryMethodPattern)只有一个抽象产品类,而抽象工厂模式(AbstractFactoryPattern)有多个;
  • 工厂方法模式(FactoryMethodPattern)的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式(AbstractFactoryPattern)可以创建多个。
抽象工厂模式(AbstractFactoryPattern)的缺点:
                                              当用户需求来自增加功能,需要改好几处才能实现,修改代码较多。


当然如果想要改进抽象工厂模式(AbstractFactoryPattern)也是可以的。
可以利用C#特有的反射技术、或反射+配置文件都可以实现。

0 0