创建型模式——工厂方法模式(Factory Method Pattern)

本文介绍了工厂方法模式,对比简单工厂模式,解决了系统扩展性问题。通过定义具体工厂必须实现的接口,无需修改工厂即可添加新产品。文章展示了如何利用面向对象多态性进行系统扩展,并总结了模式的优点和缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  开头

  上一篇我们讲到了简单工厂模式,我们知道简单工厂模式存在很大的弊端,就是系统扩展的问题,当我们添加新的产品就不得不修改简单工厂里面的方法,我们知道面向对象开放—封闭性原则,这样的改动破坏了代码的封装性。这个问题如何解决呢?就是今天我们所讲的工厂方法模式。


例子展示

   工厂方法模式—工厂不在负责产品的创建,而是给出具体工厂必须实现的接口,这样就不需要改动工厂来添加新产品。下面我们举一个制作甜品的工厂。


当系统添加新产品,利用面向对象多态性来完成系统的扩展,我们只需要定义一个具体的产品类,继承抽象产品类,一个具体产品的工厂,继承抽象工厂。不需要像简单工厂模式中那样去修改工厂类中的实现。具体图片如下



总结

工厂方法模式的主要优缺点

优点:

      (1) 客户不需要知道有没有该产品,只需要调用自己需要的具体产品以及生产具体产品的工厂即可。

      (2) 添加新产品只需要添加一个具体工厂类和具体产品类,提高了系统扩展性。 

缺点:

    添加新产品时需要添加一个具体工厂类和具体产品类,类的个数将成对增加,系统复杂度变高。 

适用场景:

 用户不需要知道有什么样的产品,只需要调用自己想要的具体产品,以及生产该产品的工厂。

 根据客户需求,抽象工厂提供一个接口或者父类,具体工厂只需要继承该父类,重写生产具体产品的方法即可


关于具体工厂的学习就先到这里,如果本品博客对小哥哥小姐姐有帮助的话,在博客右边顶一个吧,算是对博主的支持。


评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值