【JS设计模式】神奇的魔术师——简单工厂模式

195 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第14天,点击查看活动详情

简单工厂模式(Simple Factory): 又叫静态工厂方法,由一个工厂对象决定创建某一种产品对象类的实例。主要用来创建同一类对象。

平时我们创建一个类的实例的时候,会先写出这个类的构造函数,然后通过 new 操作符来创建实例对象。随着类的数量越来越多,我们管理起来就变得越来越困难。比方说,我们现在有一个足球类、一个篮球类、一个棒球类,当别人要用我们定义的类的时候,我们就要告诉别人我们有哪些类,每次创建的时候还要去找到对应的类,就显得非常麻烦。

这个时候我们就需要有一个 管理工具 来帮我们管理这些类,我们只需要告诉这个工具自己想要什么,这个管理工具就会自己为你创建出对应的东西,比如说你告诉它你想要一个足球,那么它就会为你创建一个足球类,而无需自己再去动手 new 一个出来。

这个管理工具是一个函数,而我们通常将这个函数称为 工厂函数, 将这种产生实例对象的模式称为 简单工厂模式。

code.png

这种模式就像是一个魔术师,我们需要什么东西就直接告诉这个魔术师就可以了,然后魔术师就会给我们把我们想要的东西变出来,至于他是怎么变出来的,我们就不需要去关心了。

简单工厂模式的理念就是创建对象,上面这种工厂模式是将不同的类实例化,还有一种简单工厂模式则是将大家相似的地方提取出来,然后不相似的地方做针对性的处理。

比如说我们想要创建一些书,而这些书像目录、页码这些地方是相似的,像书名、出版时间这些则是不同的,我们就可以将不同的这些地方作为参数传递给工厂函数来进行针对性处理。

code.png

小结

第一种通过类实例化对象创建的,而第二种则是通过创建一个新的对象,然后包装增强其属性和功能来实现的。

通过第一种方式创建的对象,如果这些类继承自同一个父类,那么它们父类原型上的方法就可以被它们共用。而第二种寄生式创建的对象, 创建出来的每一个对象都是一个新的个体, 所以它们的方法是不能共用的。