持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第4天,点击查看活动详情
简单工厂模式
简单工程模式是由一个工厂对象决定创建出哪一种产品类的实例
缺点:
- 如果产品种类非常多,switch case的判断会变得非常多
- 不符合开放-封闭原则,如果要增加或删除一个产品种类,就要修改switch case的判断代码 应用场景:jquery
工厂方法模式
工厂方法模式又称多态性工厂模式 在工厂模式中,核心的工厂类不再负责所有的产品创建,而是将具体创建的工作交给工厂子类去做
应用场景:React Create Factory
总结:
原来在简单工厂里,是由Factory来创建产品的
在工厂方法里,不再由Fcactory来创建产品,而是先创建具体的工厂,然后具体的工厂来创建产品
抽象工厂模式
抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象
工厂方法模式针对的是同一类或同等级产品,而抽象工厂模式针对的是多种类的产品设计
系统中有多个产品族,每个具体工厂负责创建同一族但属于不同产品等级(产品种类)的产品
系统一次只能消费某一族产品,即相同产品族的产品是一起被使用的
当系统需要新增一个产品族时,只需要增加新的工厂类即可,无需修改源代码;但是如果需要产品族中增加一个新种类的产品时,所有的工厂类都需要修改
组成角色:
抽象工厂:提供了创建产品的接口,包含多个创建产品的方法,即包含多个类似创建产品的方法
具体工厂:实现抽象工厂定义的接口,完成某个具体产品的创建
抽象产品:抽象产品定义,一般有多少抽象产品,抽象工厂中就包含多少个创建产品的方法
具体产品:抽象产品的实现类