介紹
- 將new操作單獨封裝
- 遇到new時,就要考慮是否該使用工廠模式
示例
- 你去購買漢堡,直接點餐、取餐,不會自己親手做
- 商店要“封裝”做漢堡的工作,做好直接給買者
簡化后的UML類圖

工廠模式-UML類圖.jpg
工廠模式常見使用場景
- jQuery的函數(shù)$(),內(nèi)部創(chuàng)建了新對象
- React.createElement
- vue異步組件
舉例
jQuery
-
('div')有何區(qū)別?
- 第一:書寫麻煩,jQuery的鏈?zhǔn)讲僮鲗⒊蔀樨瑝?/li>
- 第二:一旦類名jQuery發(fā)生變化,將是災(zāi)難性的
代碼
class Product {
constructor(name) {
this.name = name;
}
init() {
alert('init');
}
fun1() {
alert('fun1');
}
fun2() {
alert('fun2');
}
}
class Creator {
create(name) {
return new Product(name);
}
}
// 測試
let creator = new Creator();
let p = creator.create('p1');
p.init();
p.fun1();
個人總結(jié)
工廠模式主要用在需要頻繁創(chuàng)建新對象的時候,以及多處需要創(chuàng)建新對象的時候。使用工廠模式可以避免類名改動造成需要大量修改代碼的情況。