美文网首页程序员简友广场
JS设计模式之工厂模式的实现

JS设计模式之工厂模式的实现

作者: Splendid飞羽 | 来源:发表于2020-07-26 15:36 被阅读0次

定义:定义一种创建对象的接口,让子类决定实例化哪一个工厂类,工厂模式使创建过长延迟到子类中执行

如何解决:让其子类实现工厂接口,返回的也是一个抽象的产品。

应用实例
1、您需要一辆汽车,可以直接从工厂里面提货,而不用去管这辆汽车是怎么做出来的,以及这个汽车里面的具体实现。

ES6 实现

  /*实体类,Dog、Cat等*/
class Dog{
    run(){
        console.log('Dog-----')
    }
}

class Cat{
    run(){
        console.log('Cat-----')
    }
}
 /*工厂类Animal*/
class Animal{
    constructor(type){
        switch (type) {
            case 'dog':
                return new Dog();
            case 'cat':
                return new Cat();
            default:
                break;
        }
    }
}

let dog = new Animal('dog');
dog.run();

let cat = new Animal('cat');
cat.run()
// console.log(dog)

总结:工厂模式实现起来比较简单,主要是注意工厂模式不需要知道传入的实例是 什么,只关心从工厂里面输出的是什么。

就比如上面的例子,假如Animal是一个肉品加工厂,不需要关注是如何加工的,只需要给它一头猪,能够给我相应的猪肉相关的产品,比如经过一系列加工的香肠,本人最爱吃的猪肉脯等等,只需要知道名称,不关心其如何实现,这就是工厂模式的核心

工厂模式的优点:

1、调用者想创建对象,只需要知道其名名称即可,不需要知道里面是如何实现的
2、扩展性高,如果想增加一个产品,扩展一个工厂类即可
3、屏蔽产品的具体实现,调用者只关心产品的接口。

缺点:

每次增加一个产品时,都需要增加一个具体类和对象实现工厂,使得系统中类的个数成倍增加,在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖。这并不是什么好事。

相关文章

  • 前端设计模式

    JS设计模式一:工厂模式jS设计模式二:单例模式JS设计模式三:模块模式JS设计模式四:代理模式JS设计模式五:职...

  • iOS设计模式(三)之抽象工厂模式

    设计模式系列传送门 iOS设计模式(一)之简单工厂模式iOS设计模式(二)之工厂模式iOS设计模式(三)之抽象工厂...

  • iOS设计模式(一)之简单工厂模式

    设计模式系列传送门 iOS设计模式(一)之简单工厂模式iOS设计模式(二)之工厂模式iOS设计模式(三)之抽象工厂...

  • iOS设计模式(二)之工厂模式

    设计模式系列传送门 iOS设计模式(一)之简单工厂模式iOS设计模式(二)之工厂模式iOS设计模式(三)之抽象工厂...

  • 设计模式之工厂模式

    设计模式之工厂模式 标签(空格分隔): 设计模式 工厂模式 设计模式的感念 设计模式的应用 工厂设计模式的产生 工...

  • iOS设计模式之美-适配器模式

    iOS设计模式之美-工厂模式iOS设计模式之美-抽象工厂模式iOS设计模式之美-生成器模式iOS设计模式之美-适配...

  • iOS设计模式之美-抽象工厂模式

    iOS设计模式之美-工厂模式iOS设计模式之美-抽象工厂模式iOS设计模式之美-生成器模式iOS设计模式之美-适配...

  • iOS设计模式之美-工厂模式

    iOS设计模式之美-工厂模式iOS设计模式之美-抽象工厂模式iOS设计模式之美-生成器模式iOS设计模式之美-适配...

  • iOS设计模式之美-生成器模式

    iOS设计模式之美-工厂模式iOS设计模式之美-抽象工厂模式iOS设计模式之美-生成器模式iOS设计模式之美-适配...

  • 设计模式系列

    创建型模式: 设计模式之工厂模式(Factory Pattern)设计模式之抽象工厂模式(Abstract Fac...

网友评论

    本文标题:JS设计模式之工厂模式的实现

    本文链接:https://www.haomeiwen.com/subject/fhgwlktx.html