一 含义解释:
工厂模式是用来创建对象最常用的一种模式,我们不暴露创建对象的具体逻辑,而是将逻辑封装在一个函数中,那么这个函数就可以被视为一个工厂。
工厂模式根据抽象程度的不同可以分为:简单工厂,工厂方法和抽象工厂。
现实世界举例:
加工厂 超市 去购买汉堡,直接点餐、取餐、不会自己亲自做;(买者不关注汉堡是怎么做的)
商店要封装做汉堡的工作,做好直接给买者;(商家也不会告诉你是怎么做的,也不会傻到给你一片面包,一些奶油,一些生菜让你自己做)
外部不许关心内部构造器是怎么生成的,只需调用一个工厂方法生成一个实例即可;
二 作用
简单工厂模式又叫静态工厂方法,用来创建某一种产品对象的实例,用来创建单一对象;
工厂方法模式是将创建实例推迟到子类中进行;
抽象工厂模式是对类的工厂抽象用来创建产品类簇,不负责创建某一类产品的实例。
在实际的业务中,需要根据实际的业务复杂度来选择合适的模式。对于非大型的前端应用来说,灵活使用简单工厂其实就能解决大部分问题。
三 类型
计算机世界
1 简单工厂模式
-简单工厂模式又叫静态工厂模式
静态表
比如路由表
比如静态资源文件表
2.工厂方法模式
工厂方法模式的本意是将实际创建对象的工作推迟到子类中,这样核心类就变成了抽象类。
但是在JavaScript中很难像传统面向对象那样去实现创建抽象类。
所以在JavaScript中我们只需要参考它的核心思想即可。我们可以将工厂方法看作是一个实例化对象的工厂类。虽然ES6也没有实现abstract,但是我们可以使用new.target来模拟出抽象类。
new.target指向直接被new执行的构造函数,我们对new.target进行判断,如果指向了该类则抛出错误来使得该类成为抽象类。
3.抽象工厂模式
抽象工厂其实是实现子类继承父类的方法。 大白话:
书面语:
四 优缺点
简单工厂模式是创建型模式的基础,工厂方法模式通过引入抽象工厂类和具体工厂子类来实现对象的可定制性,而抽象工厂模式进一步扩展了工厂方法模式,提供了一种组织一组相关工厂类的方式,用于创建相关或相互依赖的对象。