概述

在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时由于需求的变化,往往存在着更多系列对象的创建工作。如何应对这种变化?如何绕过常规的对象的创建方法(new),提供一种“封装机制”来避免客户程序和这种“多系列具体对象创建工作”的紧耦合?这就是我们要说的抽象工厂模式。

意图

提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

特点

1)        抽象工厂就是对象的创建

2)        它的特色就是可以生产超过一种类型的对象

3)        客户端创建的对象,只需要对象的接口,而不是具体执行操作的对象

4)        抽象工厂创建的不同类型的对象是相互关联的,他们来自与共同的家族

5)        抽象工厂隔离的具体的类

6)        它可以使交换家族的产品变的非常容易

7)        它提倡产品之间的一致性

8)        它支持增加新的产品和族

实例

类图

 抽象工厂模式(Abstract Factory)

代码

抽象工厂模式(Abstract Factory)using System;
抽象工厂模式(Abstract Factory)
抽象工厂模式(Abstract Factory)
using System.Collections.Generic;
抽象工厂模式(Abstract Factory)
抽象工厂模式(Abstract Factory)
using System.Text;
抽象工厂模式(Abstract Factory)
抽象工厂模式(Abstract Factory)
using System.Reflection;
抽象工厂模式(Abstract Factory)
抽象工厂模式(Abstract Factory) 
抽象工厂模式(Abstract Factory)
抽象工厂模式(Abstract Factory)
namespace Wage
抽象工厂模式(Abstract Factory)

 另外一个关于点、线、面的例子:

抽象工厂模式(Abstract Factory)
抽象工厂模式(Abstract Factory)
namespace GeoFactory
}

抽象工厂模式(Abstract Factory)namespace CsharpAbstractFactory


总结

抽象工厂模型可以采用接口,也可以采用抽象类,这两种方法都可以。在具体的运用中,我们要灵活对待,当然,这也和个人的习惯有关。上面的例子是我在TerryLee's Tech Space的博客里看的,他采用的是抽象类,在这里我采用的是接口,并给出了类图,希望对大家有所帮助。

相关文章:

  • 2021-06-02
  • 2021-05-13
  • 2021-08-24
  • 2022-12-23
猜你喜欢
  • 2021-11-15
  • 2021-08-22
  • 2021-09-09
  • 2021-11-01
相关资源
相似解决方案