设计模式-工厂方法-创建型模式

导读:本篇文章讲解 设计模式-工厂方法-创建型模式,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

介绍完简单工厂之后,现在就来介绍一下工厂方法模式。之前简单工厂有一个弊端就是每次你需要产生新的产品的时候都需要对创建工厂类进行更改,如同前一篇文章说过的一样最后的后果是工厂类会变得十分庞大。
而工厂方法模式就是对简单工厂的进一步抽象,引入了抽象工厂,而具体的产品则由具体的产品工厂来进行构建。从而将创建对象的工作从一个工厂当中分离出来,转而延迟到具体的产品工厂来进行实例化。
所以,在工厂方法模式当中,由这 4 个对象构成:

  1. 抽象工厂
  2. 具体工厂
  3. 抽象产品
  4. 具体产品
    抽象工厂用于用于定义创建产品等抽象方法,而具体工厂则实习现这些接口用来创建具体产品。我们用来代码来实现。
    抽象工厂:
public abstract class AbsFactory
{
    public abstract Food CreateFood();
}

具体工厂A:

public class FactoryA : AbsFactory
{
    public override Food CreateFood()
    {
        return new FoodA();
    }
}

具体工厂B:

public class FactoryB : AbsFactory
{
    public override Food CreateFood()
    {
        return new FoodB();
    }
}

抽象产品:

public abstract class Food
{
    public abstract void Print();
}

具体产品A:

public class FoodA : Food
{
    public override void Print()
    {
        Console.WriteLine("这是具体产品A");
    }
}

具体产品B:

public class FoodB : Food
{
    public override void Pring()
    {
        Console.WriteLine("这是具体产品B");
    }
}

使用:

public class Startup
{
    static void Main()
    {
        Food foodA = new FactoryA().CreateFood();
        Food foodb = new FactoryB().CreateFood();
        foodA.Print();
        foodB.Print();
    }
}

这些工厂类别的设计模式都对用户隐藏了创建细节,用户不用关心对象是如何创建的,只需要调用工厂方法来创建即可。
而且工厂方法将具体的操作落实到具体子类,这样的话,当新增产品的时候不需要对工厂类进行任何更改,直接继承自抽象工厂即可。
不过也有不好的地方,你每次要新增一个产品,那么也就意味着你也需要增加一个相应的工厂,会造成系统复杂度提升。
工厂模式核心基本上就是,将对象的依赖由对象到工厂。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由半码博客整理,本文链接:https://www.bmabk.com/index.php/post/10146.html

(0)
小半的头像小半

相关推荐

半码博客——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!