国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

單例和原型模式-創(chuàng)建型

原創(chuàng) 2016-11-10 09:12:38 500
摘要:單例模式確保一個特殊類的實例是獨一無二的(它是這個類的唯一實例),并且這個實例易于被訪問。解決方案1)全局變量:一個全局變量使得一個對象可以被訪問,但它不能防止你實例化多個對象。因為你的任何代碼都能修改全局變量,這將不可避免的引起更多調(diào)試的意外。換句話說,全局變量的狀態(tài)總是會出現(xiàn)一些問題的。2)類構造函數(shù)私有和類自身的靜態(tài)方法:讓類自身負責保存它的唯一實例(靜態(tài)變量)。這個類可以保證沒有其他實例可

單例模式

確保一個特殊類的實例是獨一無二的(它是這個類的唯一實例),并且這個實例易于被訪問。

解決方案

1)全局變量:一個全局變量使得一個對象可以被訪問,但它不能防止你實例化多個對象。因為你的任何代碼都能修改全局變量,這將不可避免的引起更多調(diào)試的意外。換句話說,全局變量的狀態(tài)總是會出現(xiàn)一些問題的。

2)類構造函數(shù)私有和類自身的靜態(tài)方法:讓類自身負責保存它的唯一實例(靜態(tài)變量)。這個類可以保證沒有其他實例可以被創(chuàng)建(通過截取創(chuàng)建新對象的請求) ,并且它可以提供一個訪問該實例的方法(靜態(tài)方法)。這就是Singleton模式。(dubbo check 線程安全問題等)

單件模式可以多個實例

     單件模式并不是說一個類只能只有一個實例。假設我們使用在一個web 請求或者進程里面。一個用戶id對應的某個類只能有唯一的實例。我們的User類,可以有多個實例,每個實例對應一個uid. 實例列表注冊到map中以uid為key關聯(lián)起來。

原型模式

創(chuàng)建型模式一般是用來創(chuàng)建一個新的對象,然后我們使用這個對象完成一些對象的操作,我們通過原型模式可以快速的創(chuàng)建一個對象而不需要提供專門的new()操作就可以快速完成對象的創(chuàng)建,這無疑是一種非常有效的方式,快速的創(chuàng)建一個新的對象。

例子1:

孫悟空拔下一嘬猴毛,輕輕一吹就會變出好多的孫悟空來。

例子2:

下面是一個郵寄快遞的場景:

“給我寄個快遞?!鳖櫩驼f。

“寄往什么地方?寄給……?”你問。

“和上次差不多一樣,只是郵寄給另外一個地址,這里是郵寄地址……”顧客一邊說一邊把寫有郵寄地址的紙條給你。

“好!”你愉快地答應,因為你保存了用戶的以前郵寄信息,只要復制這些數(shù)據(jù),然后通過簡單的修改就可以快速地創(chuàng)建新的快遞數(shù)據(jù)了。

通過復制(克隆、拷貝)一個指定類型的對象來創(chuàng)建更多同類型的對象。這個指定的對象可被稱為“原型”對象,也就是通過復制原型對象來得到更多同類型的對象。即原型設計模式。在php的很多模板庫,都用到clone。如smarty等。


發(fā)佈手記

熱門詞條