设计模式 - 工厂模式

什么是工厂模式?

工厂模式是用来创建对象的一种最常用的设计模式。我们不暴露创建对象的具体逻辑,而是将将逻辑封装在一个函数中,那么这个函数就可以被视为一个工厂。工厂模式根据抽象程度的不同可以分为:简单工厂工厂方法抽象工厂

代码

class Product {
    constructor(name) {
        this.name = name
    }
    init() {
        console.log('init')
    }
    fun1() {
        console.log('fun1')
    }
    fun2() {
        console.log('fun2')
    }
}

class Creator {
    create(name) {
        return new Product(name)
    }
}

// 测试
let creator = new Creator()
let p = creator.create('p1')
p.init()
p.fun1()

什么时候会用工厂模式?

将new操作简单封装,遇到new的时候就应该考虑是否用工厂模式;

工厂模式的好处?

  • 调用方便。外部不用关心内部构造器是怎么生成的,只需调用一个工厂方法生成一个实例即可。

  • 更好的代码组织。构造函数和创建者分离,符合开放封闭原则。

实际例子

  • jQuery的$(selector) jQuery中$('div')new $('div')哪个好用,很显然直接$()最方便 ,这是因为$()已经是一个工厂方法了;

    class jQuery {
        constructor(selector) {
            super(selector)
        }
        //  ....
    }
    
    window.$ = function(selector) {
        return new jQuery(selector)
    }
    
posted @ 2022-04-08 17:02  Better-HTQ  阅读(25)  评论(0编辑  收藏  举报