建立物件之 工廠模式 個人心得

2022-03-25 02:27:34 字數 2171 閱讀 1018

一、工廠模式

顧名思義,這個肯定是乙個類似於機器的方法,只要把原料(引數)放入機器,經過機器加工,就能獲得想要的物件。

具體的例子:

function creatperson(name,age);

o.name=name;

o.age=age;

o.sayhello=function()

return o;

}上面的方法就叫做工廠。而我們如果想加工兩個東西,下面是實際的加工:

var person1=creatperson("lwl",25);

var person2=creatperson("lucy",30);

這時候person1和person2都獲得了creatperson()函式加工的資料(即物件)

這裡注意幾點:

1、每個實際生產出來的物件,雖然是根據乙個方法來的,但是並不相同。所以每個產生出來的物件並不相同。

2、即使兩個生產物件時候,引數完全相同的情況下,產生的物件也不相同。比如講上面改為:

var person1=creatperson("lwl",25);

var person2=creatperson("lwl",25);

這樣產生的person1和person2,也不相同。感覺非常難理解是吧?其實可以這樣理解,把工廠模式想象成加個冰淇淋的機器(說到這,我無恥的流口水了),下面是具體的代表含義:

工廠模式的建構函式--------------------冰淇淋機器,功能是產生最後的冰淇淋(物件)

工廠模式的各個引數--------------------加入冰淇淋的原料哦,比如可以是冰淇淋的味道,大小,形狀等          

工廠模式的實際工作過程---------------產生冰淇淋過程,每次都放入一些原料(引數),機器轉動,生成乙個美味的冰淇淋,給所需要的人,所需要的人就獲得了冰淇淋(實際的變數獲得了例項物件)。

這個例子可能讓大家明白了不少,可是有人又要有疑問了,我放入的引數,產生的冰淇淋應該是一樣的啊。為什麼上面說不一樣呢。其實是一樣的,但是有個很重要的區別,兩次產生的冰淇淋給的是兩個人,兩個不同的人,所以大家看到的結果是,這個生產的結果是不一樣的,乙個是a獲得了冰淇淋,乙個是b獲得了冰淇淋。所以a!=b

但是,可以看到,當引數一樣,有些情況還是一樣的,比如:

1) var p1=p2= creatperson("lwl",34);    

-- 什麼,將乙個冰淇淋同時給兩個人吃?
--- 是啊,人家是情侶不行嘛。

此時。兩個變數實際都指向產生的這個新物件,他們兩個也就相當於乙個指標類似的東西,所以指向的東西是一樣的。

2)一開始的的方法,建立兩個例項物件例子,但是還是有點相同之處:

var person1=creatperson("lwl",25);

var person2=creatperson("lwl",30);

person1==person2         flase 

person1.name==person2.name   true

person1.age==person2.age    false  

這裡,很奇怪的是:

person1.sayhello== person1.sayhello   false  

//兩個獲得的都是乙個宣告的乙個新的匿名函式。所以不是同乙個函式了。所以不管函式裡面是宣告都不會相等。

而此時,看一下最上面的結果:

p1==p2            //true

p1===p2          //true

p1.name==p2.name    //true

....

p1.sayhello=p2.sayhello     / / true

這裡一開始讓我很費解,後來想想也就解釋的通了,這裡兩個指向的其實是同乙個物件的同乙個方法。就像兩個人同時吃冰淇淋的頂部,相當於冰淇淋的所有部分都是共享的。

總結:一、工廠模式優點:通過工廠模式,能夠迅速建立想要的物件。簡潔、明了、迅速,並且所有的物件的基本結構都是一樣的。(比如都是冰淇淋,而不可能乙個是冰淇淋乙個是餅乾)

二、工廠模式缺點:方法最明顯的缺點,

1、無法解決物件識別的問題,即怎麼知道物件的一型別。(書上的解釋)

2、幾個物件無法共享某乙個特定的屬性,物件彼此之間都是不相同的。

js建立物件之工廠模式

提取js 建立物件 工廠模式 ecmascript無法建立類,開發人員就發明了一種函式,用函式來封裝以特定介面建立物件的細節 function createperson name age job return o var person1 createperson 寶清老窖 29 software e...

Hive個人心得筆記之基礎指令

desc 表 檢視表結構 沒有主鍵,可以重複提交 手動提交 效率過低,可以通過檔案形式傳輸 load data local inpath home software 1.txt into table stu 通重載入檔案資料到指定的表裡 但是,如果不指定分割格式,無法正常傳輸 作用 額外說明 sho...

」物件建立」模式 工廠模式

物件建立 模式 通過 物件建立 模式繞開new,來避免物件 new 過程中所導致的緊耦合 依賴具體類 從而支援物件建立的穩定,他是介面之後的第一步工作 典型模式 factory method abstract factory prototype builder 動機在軟體系統中,經常面臨著建立物件的...