工厂模式(简明讲解)

工厂模式

avatar

工厂模式主要可分为三种:简单工厂,工厂方法,抽象工厂

简单工厂

提供实现方法的工厂

简单工厂主要有使用工厂的对象,工厂,具体实现类以及从实现类中抽象出的接口,如下图:

avatar

简单工厂的问题在于当具体实现类的增加,工厂的代码也得不断修改(增加),违反了开闭原则(OOP)

工厂方法

提供工厂的方法

具体来说有:工厂接口,产品接口,产品实现类,工厂实现类,使用类

  • 每类产品都有自己的工厂,符合单一职责原则;
  • 这类产品变化只改变这类产品的工厂,更符合开闭原则

但工厂方法也有自己的问题,就是每当新增一类产品时,就得多增加一个工厂,当产品种类非常多时,就会有非常多的工厂,这会导致代码变得复杂和难以维护.

抽象工厂

提供组合工厂的方法

具体来说有:抽象工厂工厂,产品接口,产品实现

举个例子,我要代工生产的产品有电脑,路由器……等产品,这些产品的制造方法在抽象工厂接口被定义,根据具体的品牌分别创建不同品牌的工厂,像小米工厂,华为工厂,vivo工厂等,产品的制造方法在具体品牌的工厂实现,这些产品实现也实现了具体的产品接口,华为手机实现手机接口,制造华为手机的方法返回华为手机,实现制造手机接口,每种产品都是如此。

优点:

  • 可以确保同一工厂生成的产品相互匹配。
  • 可以避免客户端和具体产品代码的耦合。
  • 单一职责原则:可以将产品生成代码抽取到同一位置,使得代码易于维护。
  • 原则:向应用程序中引入新产品变体时,无需修改客户端代码

缺点:

-全新品类产品难以扩展:本来只准备生产电脑,路由器,现在又要添加手表这类产品,从抽象工厂开始的所有往底层所有代码都要修改。

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值