JavaScript建立物件(一)——工廠模式
使用Object
建構函式是js中建立物件最簡單的一種方式:
var person = new Object();
person.name = 'Bob';
person.age = 18;
person.job = '全棧工程師';
person.sayName = function(){
console.log(this.name);
}
建立物件還可以使用物件字面量的方式,像下面這樣:
var person = {
name: 'Bob',
age: 18,
job: '全棧工程師',
sayName: function(){
console.log(this.name);
}
}
但是這兩個方式有個明顯的缺點:使用同一個介面建立很多物件,會產生大量的重複程式碼。為了解決這個問題,人們開始使用工廠模式的一種變體來建立物件。
工廠模式是軟體工程領域一種廣為人知的設計模式,這種模式抽象了建立物件的具體過程。考慮到在ECMAScript中無法建立類,開發人員就發明了一種函式,用函式來封裝以特定介面建立物件的細節,如下面的例子所示:
function createPerson(name, age, job){
var o = new Object();
o.name = name;
o.age = age;
o.job = job;
o.sayName = function(){
console.log(this.name);
}
return o;
}
函式createPerson()
能夠根據接受的引數來構建一個包含所有必要資訊的Person
物件。可以無數次的呼叫這個函式,而每次它都會返回一個包含三個屬性一個方法的物件。這大大簡化了重複程式碼的書寫。
假如我們需要建立三個Person
物件,如果使用Object
建構函式的方式,要像下面這樣:
var person1 = new Object();
person1.name = 'Bob';
person1.age = 18;
person1.job = '全棧工程師';
person1.sayName = function(){
console.log(this.name);
}
var person2 = new Object();
person2.name = '張三';
person2.age = 20;
person2.job = 'Java工程師';
person2.sayName = function(){
console.log(this.name);
}
var person3 = new Object();
person3.name = '李四';
person3.age = 22;
person3.job = '前端工程師';
person3.sayName = function(){
console.log(this.name);
}
但如果使用工廠模式,只要這樣:
function createPerson(name, age, job){
var o = new Object();
o.name = name;
o.age = age;
o.job = job;
o.sayName = function(){
console.log(this.name);
}
return o;
}
var p1 = createPerson('Bob', 18, '全棧工程師');
var p2 = createPerson('張三', 20, 'Java工程師');
var p3 = createPerson('李四', 22, '前端工程師');
很明顯,使用工廠模式建立物件的程式碼要簡單多了,看起來更舒服,而且建立的物件越多,工廠模式的優點越明顯。
但是,工廠模式也不是沒有缺點,雖然簡化了建立多個相似物件的程式碼,但卻沒有解決物件識別的問題(即怎樣知道一個物件的型別)。隨著javascript的發展,又一個新模式出現了——建構函式模式,下一篇文章就來討論討論該模式。
文章參考:《JavaScript高階程式設計》第3版
相關文章
- 【Python設計模式】03 工廠模式:建立建立物件的工廠Python設計模式物件
- Abstract Factory(抽象工廠)——物件建立型模式抽象物件模式
- 工廠模式-將物件的建立封裝起來模式物件封裝
- 建立型:工廠模式-工廠方法、抽象工廠模式抽象
- 工廠模式建立物件和自定義建構函式建立物件的異同模式物件函式
- 建立型:工廠模式-簡單工廠模式
- 建立模式 01-工廠模式模式
- 建立型模式之單例模式與工廠模式(一)模式單例
- 設計模式-建立型模式-工廠模式(工廠三兄弟) TypeScript設計模式TypeScript
- 建立型模式:工廠方法模式
- 建立型模式:抽象工廠模式抽象
- 建立型模式-單例模式-工廠模式模式單例
- Javascript 設計模式之工廠模式JavaScript設計模式
- Javascript設計模式(二)工廠模式JavaScript設計模式
- JAVA設計模式 3【建立型】理解工廠模式與抽象工廠模式Java設計模式抽象
- 一篇搞定工廠模式【簡單工廠、工廠方法模式、抽象工廠模式】模式抽象
- JavaScript建立物件(三)——原型模式JavaScript物件原型模式
- 建立型設計模式——抽象工廠模式設計模式抽象
- 設計模式-建立型-工廠方法設計模式
- JavaScript設計模式與實踐–工廠模式JavaScript設計模式
- JavaScript設計模式與實踐--工廠模式JavaScript設計模式
- 簡單工廠模式、工廠模式、抽象工廠模式比較模式抽象
- 設計模式之工廠模式!深入解析簡單工廠模式,工廠方法模式和抽象工廠模式設計模式抽象
- 設計模式-簡單工廠、工廠方法模式、抽象工廠模式設計模式抽象
- 工廠模式之簡單工廠模式模式
- 設計模式之工廠模式(一)設計模式
- JS設計模式一:工廠模式JS設計模式
- JS設計模式(一)--- 工廠模式JS設計模式
- C# 設計模式(1)——簡單工廠模式、工廠模式、抽象工廠模式C#設計模式抽象
- 設計模式-工廠模式二(工廠方法模式)設計模式
- 物件建立模式物件模式
- python--設計模式--4--建立型--工廠方法模式Python設計模式
- 簡單工廠模式和抽象工廠模式模式抽象
- 工廠模式(簡單工廠模式)快速理解模式
- python物件導向之抽象工廠設計模式Python物件抽象設計模式
- 設計模式(一)—— 簡單工廠模式設計模式
- 簡單工廠模式、工廠方法模式和抽象工廠模式有何區別?模式抽象
- [java設計模式]工廠設計模式,給物件一個合法的生產渠道。Java設計模式物件