C#设计模式——抽象工厂模式

原文链接:https://www.cnblogs.com/zhili/p/AbstractFactory.html
1. 什么是抽象工厂模式
抽象工厂模式也是属于设计模式中的创建型模式,用于产品族的构建。
抽象工厂是指当有多个角色时使用的一种工厂模式。
抽象工厂模式可以向客户端提供一个接口,是客户端在不必指定产品的具体情况下,创建多个产品族的产品对象。

2. 抽象工厂模式的结构

C#设计模式——抽象工厂模式_第1张图片
图片来自:https://www.cnblogs.com/geq2020/p/12592104.html

3. 抽象工厂模式的应用场景

  • 一个系统不要求依赖产品类实例如何被创建、组合和表达的表达,这点也是所有工厂模式应用的前提。
  • 这个系统有多个系列产品,而系统中只消费其中某一系列产品
  • 系统要求提供一个产品类的库,所有产品以同样的接口出现,客户端不需要依赖具体实现。

4. 抽象工厂模式的优缺点

1)抽象工厂模式的优点
抽象工厂模式将具体产品的创建延迟到具体工厂类的子类中,这样将对象的创建封装起来,可以减少客户端与具体产品类之间的依赖,从而降低系统耦合度,这样更有利于后期的维护和扩展
2)抽象工厂模式的缺点
抽象工厂模式很难支持新种类产品的变化。这是因为抽象工厂接口中已经确定了可以被创建的产品集合,如果需要添加新产品,此时就必须去修改抽象工厂的接口,这样就涉及到抽象工厂类的以及所有子类的改变,这样也就违背了“开发——封闭”原则。
5. 抽象工厂模式的实现

    /// 
    /// 下面以绝味鸭脖连锁店为例子演示下抽象工厂模式
    /// 因为每个地方的喜欢的口味不一样,有些地方喜欢辣点的,有些地方喜欢吃不辣点
    /// 客户端调用
    /// 
    class Program
    {
   
        static void Main()
        {
   
            //湖南工厂制作南昌的鸭脖和鸭架
            AbstractFactory nanChangFactory = new HunanFactory();
            YaBo nanChangYaBo = nanChangFactory.CreateYaBo();
            nanChangYaBo.Print();
            YaJia nanChangYaJia = nanChangFactory.CreateYaJia();
            nanChangYaJia.

你可能感兴趣的:(设计模式)