- 1.什么是設(shè)計(jì)模式杨何?
設(shè)計(jì)模式是解決某個(gè)特定場(chǎng)景下對(duì)某種問(wèn)題的解決方案酱塔。
- 2.為什么要用設(shè)計(jì)模式?
- 可以提高代碼的重用性危虱,易被他人理解羊娃,使得代碼可靠性更高。比如新的需求添加或變動(dòng)埃跷,我們不能直接修改原來(lái)的接口蕊玷,因?yàn)橹暗目赡軤可娴胶芏嗟胤剑@時(shí)候就需要設(shè)計(jì)模式(適配器模式)來(lái)解決
- 3.設(shè)計(jì)模式的原則弥雹?
- ①-單一職責(zé)原則:一個(gè)代碼實(shí)現(xiàn)一個(gè)功能垃帅,對(duì)于復(fù)雜功能的代碼把他們分成多個(gè);
- ②-開(kāi)放/封閉原則:對(duì)于擴(kuò)展開(kāi)放缅糟,對(duì)于修改封閉挺智;對(duì)于新的需求擴(kuò)展新的代碼,而不是對(duì)原代碼進(jìn)行修改窗宦;
- ③-接口隔離原則:接口之間彼此分隔開(kāi)赦颇,一
- ④-易用替換原則:子類可以覆蓋父類,有父類的地方就可以有子類的出現(xiàn)
- 4.設(shè)計(jì)模式的類型赴涵?
- ①-結(jié)構(gòu)模式類型
- ②-創(chuàng)建模式類型
- ③-行為模式類型
- 5.具體的設(shè)計(jì)模式與實(shí)現(xiàn)
- -單例模式
- 單例模式:保證一個(gè)類只有一個(gè)實(shí)例化對(duì)象媒怯,并提供一個(gè)訪問(wèn)它的全局訪問(wèn)點(diǎn)。
- -實(shí)現(xiàn)的方法:先判斷實(shí)例存在與否髓窜,如果存在則直接返回扇苞,如果不存在則創(chuàng)建后再返回欺殿,以此確保一個(gè)類只有一個(gè)實(shí)例對(duì)象。
- -適用的場(chǎng)景:一個(gè)單一的對(duì)象鳖敷。比如:彈窗脖苏,登陸等
class CreateUser{
constructor(name){
this.name = name;
this.getName();
}
getName(){
return this.name;
}
}
// 代理實(shí)現(xiàn)單例模式
var ProxyMode = (function(){
var instance = null;
return function(name){
if(!instance){
instance = new CreateUser(name);
}
return instance;
}
})();
// 測(cè)試單例模式的實(shí)例,單例模式只實(shí)例化一次,所以得到下面的結(jié)構(gòu)定踱。
var a = new ProxyMode("a");
var b = new ProxyMode("b");
console.log(a,b); // CreateUser { name: 'a' } CreateUser { name: 'a' }
console.log(a===b); // true