1. 什么是工厂模式?
工厂方法模式的实质是“定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类。工厂方法让类的实例化推迟到子类中进行。”
简单来说:就是把new
对象的操作包裹一层,对外提供一个可以根据不同参数创建不同对象的函数。
2. 工厂模式的优缺点
优点显而易见,可以隐藏原始类,方便之后的代码迁移。调用者只需要记住类的代名词即可。
由于多了层封装,会造成类的数目过多,系统复杂度增加。
3. 多语言实现
ES6 实现
调用者通过向工厂类传递参数,来获取对应的实体。在这个过程中,具体实体类的创建过程,由工厂类全权负责。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
class Dog { run() { console.log('狗') } }
class Cat { run() { console.log('猫') } }
class Animal { constructor(name) { name = name.toLocaleLowerCase() switch (name) { case 'dog': return new Dog() case 'cat': return new Cat() default: throw TypeError('class name wrong') } } }
const cat = new Animal('cat') cat.run() const dog = new Animal('dog') dog.run()
|