物件導向(建立物件) 七種模式總結

2021-08-28 18:41:42 字數 1958 閱讀 6947

工廠模式(工廠模式雖然解決了建立多個相似物件的問題,但卻沒有解決物件識別的問題(即怎樣知道乙個物件的型別))

function createperson(name, age, job) ;

return o;

}var person1 = createperson("nicholas", 29, "software engineer");

var person2 = createperson("greg", 27, "doctor");

建構函式模式(在全域性作用域中定義的函式實際上只能被某個物件呼叫;如果物件需要定義很多方法,那麼就要定義很多個全域性函式

function person(name, age, job) 

function sayname()

var person1 = new person("nicholas", 29, "software engineer");

var person2 = new person("greg", 27, "doctor");

原型模式(引用型別存在弊端)

function person() {}

person.prototype =

};// 重設建構函式,只適用於 ecmascript 5 相容的瀏覽器

object.defineproperty(person.prototype, "constructor", );

組合使用建構函式模式和原型模式(認可度最高)

function person(name, age, job) 

person.prototype =

}var person1 = new person("nicholas", 29, "software engineer");

var person2 = new person("greg", 27, "doctor");

person1.friends.push("van");

alert(person1.friends); //"shelby,count,van"

alert(person2.friends); //"shelby,count"

alert(person1.friends === person2.friends); //false

alert(person1.sayname === person2.sayname); //true

動態原型模式

function person(name, age, job) ;

}}var friend = new person("nicholas", 29, "software engineer");

friend.sayname();

寄生建構函式模式

function person(name, age, job) ;

return o;

}var friend = new person("nicholas", 29, "software engineer");

friend.sayname(); //"nicholas"

穩妥建構函式模式

function person(name, age, job) ;

//返回物件

return o;

}var friend = person("nicholas", 29, "software engineer");

friend.sayname(); //"nicholas"

JavaScript 建立物件的七種方式

工廠模式 function createperson name,job return o var person1 createperson jiang student var person2 createperson x doctor 可以無數次呼叫這個工廠函式,每次都會返回乙個包含兩個屬性和乙個方...

Opencv顯示建立Mat物件的七種方式

方式一 方式二 建立三維的矩陣 建立乙個超過二維的矩陣 include includeusing namespace std using namespace cv int main 3維的 為2 2 2的 元素全部為0 mat array2 3,sz,cv 8uc1,scalar 0 因為是三維的,...

七種設計模式原則總結

目錄 一 物件導向解決核心問題 可維護性 可復用性 二 七種設計模式原則總結 這倆個問題是核心問題,如果這倆個問題能解決,才是真正的物件導向程式設計 設計模式原則 定義單一職責原則 single responsibility principle,srp 乙個類只負責乙個功領域中的相應職責 開閉原則 ...