把好的例子總結(抄)了下
下面這個例子就是只生成乙個mask,用到了閉包
參考
var singleton = function( fn )
}var createmask = singleton( function())
/*basic singleton*/
var singleton = ,
method2:function(){}
};
還有上面這種,是最簡單的,只提供了乙個介面,原來寫元件的時候經常用到對不對
參考:
//basketball base class
var baseketball = function()
baseketball.prototype = ,
getballsize : function()
} //football base class
var football = function()
football = function(),
getballsize = function()
} //sport factory
var sportsfactory = function(name)
} //when you want football
var football = sportsfactory('wordcup');
console.log(football);
console.log(football.intro);
football.getmember();
參考:
var dp = require("./designpattern.js");
function cpufactory()
function intelcpu() ;
}function amdcpu() ;
}function provider()
function intercpufactory() ;
}function amdcpufactory() ;
}var cpufactory = new intercpufactory();
var intelcpu = cpufactory.createcpufactory();
intelcpu.createcpu();
cpufactory = new amdcpufactory();
var amdcpu = cpufactory.createcpufactory();
amdcpu.createcpu();
喜歡這個例子,然後看這個例子的時候,發現這個博主寫的都很好 先紀錄下
參考:
var pubsub = {}; // 定義發布者
(function (q)
settimeout(function ()
}, 0);
return true;
};//訂閱方法,由訂閱者來執行
q.subscribe = function (type, func)
// token相當於訂閱者的id,這樣的話如果退訂,我們就可以針對它來知道是誰退訂了。
var token = (++subuid).tostring();
// 每訂閱乙個,就把它存入到我們的陣列中去
list[type].push();
return token;
};//退訂方法
q.unsubscribe = function (token) }}
}return false;
};} (pubsub));
//將訂閱賦值給乙個變數,以便退訂
var girla = pubsub.subscribe('js類的文章', function (type, content) );
var girlb = pubsub.subscribe('js類的文章', function (type, content) );
var girlc = pubsub.subscribe('js類的文章', function (type, content) );
//發布通知
pubsub.publish('js類的文章', '關於js的內容');
// 輸出:
//girla退訂了關於js類的文章
settimeout(function () , 0);
//再發布一次,驗證一下是否還能夠輸出資訊
pubsub.publish('js類的文章', "關於js的第二篇文章");
// 輸出:
算是自己真正用過的模式了,就是一看到大量if 或者switch這種分支,可以考慮用這個模式
參考:
// 對於vip客戶function vipprice()
vipprice.prototype.getprice = function(price)
// 對於老客戶
function oldprice()
oldprice.prototype.getprice = function(price)
// 對於普通客戶
function price()
price.prototype.getprice = function(price)
// 上下文,對於客戶端的使用
function context()
context.prototype.set = function(name, strategy, price)
context.prototype.getresult = function()
var context = new context();
var vip = new vipprice();
context.set ('vip客戶', vip, 200);
context.getresult(); // vip客戶 的結賬價為: 100
var old = new oldprice();
context.set ('老客戶', old, 200);
context.getresult(); // 老客戶 的結賬價為: 60
var price = new price();
context.set ('普通客戶', price, 200);
context.getresult(); // 普通客戶 的結賬價為: 200
js學習設計模式 單例模式
單例模式 保證乙個類有且僅有乙個例項,並提供乙個訪問它的全域性訪問點。單例模式非常常用,也很容易掌握。很多物件我們通常只需要乙個。執行緒池,全域性快取,瀏覽器中的window物件,登陸視窗等。var singleton function name singleton.prototype.getnam...
設計模式 單例模式 工廠模式
1.單例設計模式 乙個類中只能有乙個物件 分為 懶漢單例模式和餓漢單例模式 懶漢單例模式 1.私有化構造器 2.宣告本類引用的型別,不要去指向物件 3.提供乙個公共靜態的方法,為外部提供物件,先判斷引用型別是否為物件,如果不是,則引用指 向乙個new 類名 並返回 如果有就返回這個引用 public...
設計模式(工廠模式,單例模式)
設計模式設計模式 gof gang of four 設計模式是指前人在長期的開發經驗中 總結出來的一套用於解決特定問題的套路 設計模式原則 1 工廠模式 示例 工廠模式思想 靜態工廠模式 author whd public abstract class carclass benz extends c...