javascript模式設計之工廠模式學習心得
模式類型:工廠模式
模式説明:常用模式之一,用來動態創建對象
適用範圍:在運行期間需要在一系列可互換的子類中進行選擇的類
注意事項:接口的實現,從而使不同子類可以被同等的'對待,恰當的使用工廠模式,但不要拘泥與形式,理解本質。
關鍵點:以 函數/類/子類 構建的選擇器
本質:函數作為選擇器的使用
一般使用形式:
作為獨立的選擇器存在:
複製代碼 代碼如下:
function FactoryMode(index){
switch(index){
case "index1" :
return new Class1();break;
case "index2":
return new Class2();break;
case "index3":
return new Class3();break;
default:return new ClassComm();break;
}
}
或作為類的一個方法存在:
複製代碼 代碼如下:
var MainClass=function(){};//主類構造器
otype={
FactoryMode:function(){}//子類選擇器
}
又或隱式選擇,即不以使用者的主觀選擇而選擇:
複製代碼 代碼如下:
var xmlRequest=function(){
if(fOnline()){
xhr= new OfflineHandler();
}//如果此時網絡不可用,創建可緩存AJAX對象
else if(ghtLatency()){
xhr= new QueuedHandler();
}//如果網絡延遲較大,創建隊列形式AJAX對象
else {
xhr=new SimpleHandler();
}//如果網絡正常,創建簡單AJAX對象
reImplements(xhr,AjaxHandler);
//檢查對象是否實現了接口,從而確保以後的工作可以順利進行
return xhr;
}
延伸:
工廠模式的本質就是選擇器的應用,選擇器不僅可作為對象的選擇,還可作為函數的選擇,類的選擇,參數的選擇
函數的選擇,如:
複製代碼 代碼如下:
var addEvent=(function(){
if(!-[0,]){
return function(elem,type,handler){
elem[type+ring()]=handler;
chEvent("on"+type,elem[type+ring]);
}}//if IE
else {
return function(elem,type,handler){
ventListener(type,handler,false);
}
}
})();//避免多次判斷
類的選擇:
複製代碼 代碼如下:
var suitableClass=function(){
if(match condition A) return Class1;
else if(match condition B) return Class2;
else return ClassComm;
}
參數的選擇:
複製代碼 代碼如下:
function Country(country){
if(country=="China")
ig={};//設置基本參數1
else if(contry=="America")
ig={};//設置參數2
else if()
.......//等等
}
otype={};
-
win2008 ASP顯示500內部錯誤不能顯示詳細錯誤的解決方法
在win2008系統中,有用户遇到這樣的情況:網站後台顯示500內部錯誤,但是卻無法打開詳細的錯誤信息。無法查看詳細的錯誤信息,用户就不能根據具體問題來解決了,這是一件很麻煩的事情。其實用户可以通過修改win2008系統中的IIS設置來顯示這個詳細的錯誤信息。一、造成50...
-
關於jQuery實現鼠標單擊網頁文字後在文本框顯示的方法介紹
本文實例講述了jQuery實現鼠標單擊網頁文字後在文本框顯示的方法。分享給大家供大家參考。具體實現方法如下:張三李四王五趙六選擇姓名$("ulli")k(function(){vartext=$(this)();$("input")("");$("input:checked")nts("td")ings("td")dren("input")(text);})希...
-
SQl常用增刪改查模板
篇一:SQl常用增刪改查SQL常用增刪改查語句增加現在有一張表,表(Test)裏面有三個字段,分別為sno,sname,age。舉例用一條增加SQL語句,插入一條數據進庫。語句:Insertinto表名value(‘數據1’,’數據2’,’數據3’)具體操作:Insertintotestvalues('test','te...
-
如何理解Javascript的caller,callee,call,apply區別
在提到上述的概念之前,首先想説説javascript中函數的隱含參數:argumentsarguments該對象代表正在執行的函數和調用它的函數的參數。[function.]arguments[n]參數function:選項。當前正在執行的Function對象的名字。n:選項。要傳遞給Function對象的從0開始的參數值...