Javascript設(shè)計模式之創(chuàng)建型設(shè)計模式
設(shè)計模式是一種軟件開發(fā)的思想,有益于降低代碼的耦合性,增強(qiáng)代碼的健壯性。往往在大型項目中用的比較多。
一. 簡單工廠模式
簡單工廠模式: 又叫靜態(tài)工廠方法,由一個工廠對象決定創(chuàng)建某一種產(chǎn)品對象實例。主要用來創(chuàng)建同一類對象
/*方式一,對不同類實例化封裝*/
//創(chuàng)建提示框類
var LoginAlert = function(text){
this.content = text
}
LoginAlert.prototype.show = function(){
//顯示警示框
}
var userNameAlert = new LoginAlert('用戶名不能多于16個字母或數(shù)字');
userNameAlert.show();
var passWordAlert = new LoginAlert('密碼錯誤');
passWordAlert.show();
//創(chuàng)建確認(rèn)框類
var LoginConfirm = function(text){
this.content = text
}
LoginConfirm.prototype = {
show:function(){
//彈出確認(rèn)框(確認(rèn)框是包含兩個按鈕的)
},
draw:function(){//繪制確認(rèn)框
}
}
var loginSucess = new LoginConfim('歡迎回來');
var loginFailed = new LoginConfim('登錄失敗');
loginSucess.draw();
loginSucess.show();
loginFailed.show();
//現(xiàn)在將兩個類封裝成一個簡單工廠函數(shù)
var PopFactory = function(name){
switch(name){
case 'alert'
return new LoginAlert();
case 'confirm'
return new LoginConfirm();
}
}
new PopFactory('alert');
/*方式二,創(chuàng)建相似對象*/
function CreatPop(type,text){
var o = new Object();
o.content = text;
o.show = function(){
//顯示彈框
}
if(type == 'alert'){
//
}
if(type == 'confirm'){
//確認(rèn)框
}
return o
}
var loginConfirm = new CreatPop('confirm','歡迎回來')
總結(jié)
第一種方式是通過實例化對象創(chuàng)建的,第二種是通過創(chuàng)建一個新對象然后包裝增強(qiáng)其屬性功能來實現(xiàn)的。他們之間的差異性也造成前面通過類創(chuàng)建的對象,如果這些類繼承一同父類,那么他們的父類原型上的方法是可以共用的。而寄生方式創(chuàng)建的對象是一個新個體,所以他們的方法就不能共用了。