真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

es6工廠模式怎么實(shí)現(xiàn)

本篇內(nèi)容介紹了“es6工廠模式怎么實(shí)現(xiàn)”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

十多年專注成都網(wǎng)站制作,成都企業(yè)網(wǎng)站建設(shè),個(gè)人網(wǎng)站制作服務(wù),為大家分享網(wǎng)站制作知識(shí)、方案,網(wǎng)站設(shè)計(jì)流程、步驟,成功服務(wù)上千家企業(yè)。為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù),專注于成都企業(yè)網(wǎng)站建設(shè),高端網(wǎng)頁(yè)制作,對(duì)衛(wèi)生間隔斷等多個(gè)方面,擁有多年的網(wǎng)站營(yíng)銷經(jīng)驗(yàn)。

es6有工廠模式;工廠模式將邏輯封裝到一個(gè)函數(shù)中,在es6中可以不使用構(gòu)造函數(shù)創(chuàng)建對(duì)象,而使用class配合static關(guān)鍵字將簡(jiǎn)單工廠封裝到User類的靜態(tài)方法中,語(yǔ)法為“class User{構(gòu)造器}static 靜態(tài)方法(){}”。

本教程操作環(huán)境:windows10系統(tǒng)、ECMAScript 6.0版、Dell G3電腦。

es6有工廠模式嗎

ES6中給我們提供了class新語(yǔ)法,雖然class本質(zhì)上是一顆語(yǔ)法糖,并也沒有改變JavaScript是使用原型繼承的語(yǔ)言,但是確實(shí)讓對(duì)象的創(chuàng)建和繼承的過程變得更加的清晰和易讀。下面我們使用ES6的新語(yǔ)法來重寫上面的例子。

ES6重寫簡(jiǎn)單工廠模式

使用ES6重寫簡(jiǎn)單工廠模式時(shí),我們不再使用構(gòu)造函數(shù)創(chuàng)建對(duì)象,而是使用class的新語(yǔ)法,并使用static關(guān)鍵字將簡(jiǎn)單工廠封裝到User類的靜態(tài)方法中:

//User類
class User {
  //構(gòu)造器
  constructor(opt) {
    this.name = opt.name;
    this.viewPage = opt.viewPage;
  }
  //靜態(tài)方法
  static getInstance(role) {
    switch (role) {
      case 'superAdmin':
      return new User({ name: '超級(jí)管理員', viewPage: ['首頁(yè)', '通訊錄', '發(fā)現(xiàn)頁(yè)', '應(yīng)用數(shù)據(jù)', '權(quán)限管理'] });
        break;
      case 'admin':
        return new User({ name: '管理員', viewPage: ['首頁(yè)', '通訊錄', '發(fā)現(xiàn)頁(yè)', '應(yīng)用數(shù)據(jù)'] });
        break;
      case 'user':
        return new User({ name: '普通用戶', viewPage: ['首頁(yè)', '通訊錄', '發(fā)現(xiàn)頁(yè)'] });
        break;
      default:
        throw new Error('參數(shù)錯(cuò)誤, 可選參數(shù):superAdmin、admin、user')
    }
  }
}

//調(diào)用
let superAdmin = User.getInstance('superAdmin');
let admin = User.getInstance('admin');
let normalUser = User.getInstance('user');

工廠模式是最常見的一種開發(fā)模式,將new操作單獨(dú)封裝,當(dāng)遇到new是應(yīng)考慮工廠模式。創(chuàng)建對(duì)象,不暴露代碼邏輯,把邏輯寫到函數(shù)里面。這個(gè)函數(shù)就是工廠模式。優(yōu)點(diǎn),簡(jiǎn)單。   缺點(diǎn)就是,每增加構(gòu)造函數(shù),都要修改函數(shù)里面的代碼邏輯。

工廠模式是用來創(chuàng)建對(duì)象的一種最常用的設(shè)計(jì)模式。我們不暴露創(chuàng)建對(duì)象的具體邏輯,而是將將邏輯封裝在一個(gè)函數(shù)中,那么這個(gè)函數(shù)就可以被視為一個(gè)工廠。工廠模式根據(jù)抽象程度的不同可以分為:簡(jiǎn)單工廠,工廠方法和抽象工廠。

如果只接觸過JavaScript這門語(yǔ)言的的人可能會(huì)對(duì)抽象這個(gè)詞的概念有點(diǎn)模糊,因?yàn)镴avaScript一直將abstract作為保留字而沒有去實(shí)現(xiàn)它。如果不能很好的理解抽象的概念,那么就很難理解工廠模式中的三種方法的異同。所以,我們先以一個(gè)場(chǎng)景去簡(jiǎn)單的講述一下抽象和工廠的概念。

簡(jiǎn)單工廠模式又叫靜態(tài)工廠模式,由一個(gè)工廠對(duì)象決定創(chuàng)建某一種產(chǎn)品對(duì)象類的實(shí)例。主要用來創(chuàng)建同一類對(duì)象。

在實(shí)際的項(xiàng)目中,我們常常需要根據(jù)用戶的權(quán)限來渲染不同的頁(yè)面,高級(jí)權(quán)限的用戶所擁有的頁(yè)面有些是無法被低級(jí)權(quán)限的用戶所查看。所以我們可以在不同權(quán)限等級(jí)用戶的構(gòu)造函數(shù)中,保存該用戶能夠看到的頁(yè)面。在根據(jù)權(quán)限實(shí)例化用戶。

代碼如下:

class SuperAdmin{
  constructor(){
    this.name = "超級(jí)管理員";
    this.viewPage = ['首頁(yè)', '通訊錄', '發(fā)現(xiàn)頁(yè)', '應(yīng)用數(shù)據(jù)', '權(quán)限管理'];
  }
}
class Admin{
  constructor(){
    this.name = "管理員";
    this.viewPage = ['首頁(yè)', '通訊錄', '發(fā)現(xiàn)頁(yè)', '應(yīng)用數(shù)據(jù)', '權(quán)限管理'];
  }
}
class NormalUser{
  constructor(){
    this.name = "普通用戶";
    this.viewPage = ['首頁(yè)', '通訊錄', '發(fā)現(xiàn)頁(yè)', '應(yīng)用數(shù)據(jù)', '權(quán)限管理'];
  }
}
//工廠方法類
class UserFactory {
  getFactory(role){
   switch (role) {
     case 'superAdmin':
       return new SuperAdmin();
       break;
     case 'admin':
       return new Admin();
       break;
     case 'user':
       return new NormalUser();
       break;
     default:
       throw new Error('參數(shù)錯(cuò)誤, 可選參數(shù):superAdmin、admin、user');
   }
  }
 }
 
//調(diào)用
let uesr =new UserFactory();
uesr.getFactory('superAdmin');
uesr.getFactory('admin');
uesr.getFactory('user');

簡(jiǎn)單工廠的優(yōu)點(diǎn)在于,你只需要一個(gè)正確的參數(shù),就可以獲取到你所需要的對(duì)象,而無需知道其創(chuàng)建的具體細(xì)節(jié)。但是在函數(shù)內(nèi)包含了所有對(duì)象的創(chuàng)建邏輯(構(gòu)造函數(shù))和判斷邏輯的代碼,每增加新的構(gòu)造函數(shù)還需要修改判斷邏輯代碼。

當(dāng)我們的對(duì)象不是上面的3個(gè)而是30個(gè)或更多時(shí),這個(gè)函數(shù)會(huì)成為一個(gè)龐大的超級(jí)函數(shù),便得難以維護(hù)。

所以,簡(jiǎn)單工廠只能作用于 創(chuàng)建的對(duì)象數(shù)量較少,對(duì)象的創(chuàng)建邏輯不復(fù)雜時(shí)使用。

“es6工廠模式怎么實(shí)現(xiàn)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!


本文題目:es6工廠模式怎么實(shí)現(xiàn)
網(wǎng)站鏈接:http://weahome.cn/article/pjsogi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部