设计模式 - 工厂模式
什么是工厂模式?
工厂模式是用来创建对象的一种最常用的设计模式。我们不暴露创建对象的具体逻辑,而是将将逻辑封装在一个函数中,那么这个函数就可以被视为一个工厂。工厂模式根据抽象程度的不同可以分为:简单工厂
,工厂方法
和抽象工厂
。
代码
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) }